Reactjs 我可以在所有钩子的依赖关系数组中放入什么类型的变量

Reactjs 我可以在所有钩子的依赖关系数组中放入什么类型的变量,reactjs,react-hooks,Reactjs,React Hooks,我使用react已经有相当一段时间了,但不知何故,我仍然想知道我可以在react钩子的dependecy数组中放置什么类型的对象(不管是什么钩子),react在dependecy数组中比较单个项的准确程度如何,我应该解析列表或嵌套js对象之类的大型对象吗 例如,这里有一个对象,每当其中的列表更改时,我希望useCallback更改该对象: function App(){ const [array,setArray] = useState([{first:'jimmy',last:'wil

我使用react已经有相当一段时间了,但不知何故,我仍然想知道我可以在react钩子的dependecy数组中放置什么类型的对象(不管是什么钩子),react在dependecy数组中比较单个项的准确程度如何,我应该解析列表或嵌套js对象之类的大型对象吗

例如,这里有一个对象,每当其中的列表更改时,我希望useCallback更改该对象:

function App(){
    const [array,setArray] = useState([{first:'jimmy',last:'willow'}]);
    const someCallback = useCalback(()=>{
        window.alert(JSON.stringify(array))
    }, [array]) // here I wonder what should I usually put?  just the array or should I parse it  to string to something like that....

// ... somthing here changes the state
    return array.map(({first,last})=><div onClick={someCallback}>{first} , {last} </div>)
}
函数应用程序(){
const[array,setArray]=useState([{first:'jimmy',last:'willow'}]);
const someCallback=useCalback(()=>{
window.alert(JSON.stringify(数组))
},[array])//我想知道我通常应该放什么?只是数组还是应该将它解析为字符串之类的东西。。。。
//…这里有些东西改变了状态
返回array.map(({first,last})=>{first},{last})
}

您完全可以将任何内容放入依赖项数组中,记住比较是基于
对象.is
执行的。如果其中任何一个值不同,则视为更改

因此,依赖关系数组可以包含任何内容:正常值,如字符串和布尔值,或
null
,甚至函数和您可以想到的任何其他内容


在这种特殊情况下,由于将使用新数组调用
setArray
(如果您更改了数组),因此有状态
array
变量中的新值将为
==
设置为该变量中的前一个值,从而导致
useCallback
再次构造回调。因此,对于依赖项数组使用
[array]
应该很好,只要您正常地遵循React规则,而不是改变状态。

数组是正确的,依赖项是变化的变量,并且是useCallback中需要的变量,以获得您想要的最终值。