随着react钩现已我应该在功能部件的情况下,包裹用的props通过各项功能useCallback并与其他所有的propsvalueuseMemo?
我的组件中还有依赖于任何 props 值的自定义函数,我应该用useCallback包装它吗?
决定组件中哪些 props 或 const 值用这个钩子包装的好做法是什么?
如果这可以提高性能,为什么不一直这样做呢?
让我们考虑自定义按钮,我们在其中包装点击处理程序并添加自定义逻辑
function ExampleCustomButton({ onClick }) {
const handleClick = useCallback(
(event) => {
if (typeof onClick === 'function') {
onClick(event);
}
// do custom stuff
},
[onClick]
);
return <Button onClick={handleClick} />;
}
让我们考虑自定义按钮,我们在其中包装点击处理程序并根据条件添加自定义逻辑
function ExampleCustomButton({ someBool }) {
const handleClick = useCallback(
(event) => {
if (someBool) {
// do custom stuff
}
},
[someBool]
);
return <Button onClick={handleClick} />;
}
在这两种情况下,我应该用useCallback包装我的处理程序吗?
使用备忘录的类似案例。
function ExampleCustomButton({ someBool }) {
const memoizedSomeBool = useMemo(() => someBool, [someBool])
const handleClick = useCallback(
(event) => {
if (memoizedSomeBool) {
// do custom stuff
}
},
[memoizedSomeBool]
);
return <Button onClick={handleClick} />;
}
在这个例子中,我什至将记忆值传递给useCallback。
另一种情况,如果组件树中的许多组件记忆相同的值怎么办?这对性能有何影响?