提问人:Deepak Sharma 提问时间:10/25/2023 最后编辑:Drew ReeseDeepak Sharma 更新时间:10/25/2023 访问量:54
类组件绑定与函数组件 useCallback
Class component bind vs. function component useCallback
问:
为了进行比较,我编写了与类与函数组件相同的逻辑,并注意到一些行为差异。
带有绑定的类组件:
this.logName = this.logName.bind(this);
然后函数组件:useCallback
const logName = useCallback(() => {
console.log(`Name is - ${state.name}`);
}, [state.name]);
在这些组件中,我调用子组件(为了性能而包装):react.memo
import React, { useEffect, useState } from "react";
const ChildComp = (props) => {
const [state, setState] = useState(0);
useEffect(() => {
console.log("child render");
setState((state) => state + 1);
}, [props]);
return (
<div className="child">
<h4>Child Comp ({state})</h4>
<button onClick={props.log}>Log Name </button>
</div>
);
};
//export default ChildComp;
export default React.memo(ChildComp, (p, n) => p.log === n.log);
如果我更新年龄,由于它不会重新渲染子项,因此在两者中都是预期的并且工作正常,但是如果我在功能中更新,子项重新渲染(由于依赖性),但在课堂上没有。由于在类组件中,我总是得到正确的值,但不能删除函数中的依赖项(),否则我会得到旧值。react.memo
state.name
useCallback
bind
[state.name]
请帮助我理解这一点。我是否需要进一步优化函数组件以获得与类相同的行为(甚至没有子渲染甚至更新),我该怎么做?state.name
答: 暂无答案
评论
Joseph
props
setState
useEffect
useRef
const count = useRef(0); count.current = count.current + 1;