Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 作为函数的道具是否属于useEffect dependencyArray?_Javascript_Reactjs_React Hooks - Fatal编程技术网

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

Javascript 作为函数的道具是否属于useEffect dependencyArray?,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,假设我有以下代码: const ReactFunction = ({...props}) => { useEffect(() => { props.function(props.value) }, [props.value]) return <input value={props.value} onChange={props.onChange} /> } const ReactFunctionWrapper = () => { const [value, s

假设我有以下代码:

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} />
}
const ReactFunction=({…props})=>{
useEffect(()=>{props.function(props.value)},[props.value])
返回
}
常量ReactFunctionWrapper=()=>{
常量[值,设置值]=设置状态(0)
常量记录器=(e)=>{console.log(e}
返回
}
function()prop是否应该也在useEffect的dependencyArray中,即使它是一个函数并且永远不会更改


依赖项数组中到底应该包含哪些内容?

技术上是的。函数可以出现在
useffect
的依赖项数组中。函数指针在每次刷新时都会更改,除非您使用一些缓存功能来缓存函数,如
usemo
useCallback

function()prop是否应该位于useEffect的dependencyArray中 即使它是一个函数,永远不会改变

如果函数没有引用来自
props
state
的任何值,或者从
props
state
派生的任何其他值,只有这样,才可以安全地从
useffect
钩子的依赖项数组或具有依赖项数组的任何其他钩子(例如
useCa”)中省略该函数llback

如果函数使用props或state,则从依赖项数组中省略它是不安全的。您可以将函数包装在
useCallback
hook中,以避免每次父组件重新呈现时创建新的函数引用

有关从useEffect的挂钩依赖项数组中省略函数可能发生的情况的详细信息,请参阅

有些函数保证不会更改,可以从依赖项数组中安全地忽略。例如:
useReducer
钩子返回的
dispatch
函数或
useState
钩子返回的状态更新函数。如果y在
useffect
hook中使用

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


组件作用域中参与react的数据流并在
useEffect
hook的回调函数中使用的所有内容。对于
useMemo
useCallback
hooks也是如此。

react.useEffect()中的第二个参数distinct当调用效果时。当第二个参数的值更改时,React运行效果


去签出

一定要将它添加到依赖项中。如果该函数没有更改,那么将其作为依赖项将不会有任何影响。但是如果它确实更改,那么您的
useffect
捕获它的新值是很重要的。只有当该函数列在依赖项数组中时才会这样做。谢谢,我想澄清一下hat useEffect中使用的所有道具和状态都应该在依赖项数组中,即使道具是函数。是的,它们应该在依赖项数组中。即使某些函数可以从依赖项数组中省略,如答案中所述,将它们添加到依赖项数组中也不会有任何伤害。