作为函数的道具是否属于useEffect-dependencyArray



假设我有以下代码:

const ReactFunction = ({...props}) => {
useEffect(() => { props.function(props.value) }, [props.value])
return <input value={props.value} onChange={props.onChange} />
}
const ReactFunctionWrapper = () => {
const [value, setValue] = setState(0)
const logger = (e) => {console.log(e}
return <ReactFunction onChange={setValue} value={value} function={function} />
}

function((道具是否也应该在useEffect的dependencyArray中,即使它是一个函数并且永远不应该更改?

依赖数组中到底应该包含什么?

从技术上讲,是的。函数可以出现在useEffect的依赖数组中。函数指针在每次刷新时都会更改,除非您使用某些缓存功能来缓存函数(如useMemouseCallback(。

函数((道具应该在useEffect的dependencyArray中吗即使它是一个函数,永远不应该改变?

如果函数没有引用propsstate中的任何值,或从propsstate中派生的任何其他值,那么从useEffect钩子的依赖数组或具有依赖数组的任何其他钩子(例如useCallback(中省略该函数是安全的。

如果函数使用props或state,那么从依赖数组中省略它是不安全的。您可以将函数包装在useCallback钩子中,以避免每次重新渲染父组件时都创建新的函数引用。

有关从useEffect的挂钩依赖数组中省略函数会发生什么的详细信息,请参阅从依赖列表中省略函数是否安全?

有些函数保证不会更改,并且可以安全地从依赖数组中省略。例如:useReducer钩子返回的dispatch函数或useState钩子返回的状态更新函数。它们可以安全地省略,但如果将它们添加到依赖数组中(如果它们在useEffect钩子中使用(,仍然不会造成伤害。

依赖数组中到底应该包含什么?

组件作用域中参与react的数据流并在useEffect钩子的回调函数中使用的所有内容。useMemouseCallback挂钩也是如此。

调用效果时React.useEffect()中的第二个参数不同。当你的第二个参数的值改变时,React运行效果

结账https://youtu.be/dpw9EHDh2bM?t=3629

相关内容

  • 没有找到相关文章

最新更新