一个页面显示对象列表[{name:, age:}, ...]
第二个页面允许更新特定对象的名称。然后使用钩子,我应该如何实现,useEffect()
以便仅在检测到名称更改时才更新首页上的列表?
const [objects, setObjects] = useState([]);
useEffect(()=> {
getAllObjects()
},[getAllObjects, objects]);
一个页面显示对象列表[{name:, age:}, ...]
第二个页面允许更新特定对象的名称。然后使用钩子,我应该如何实现,useEffect()
以便仅在检测到名称更改时才更新首页上的列表?
const [objects, setObjects] = useState([]);
useEffect(()=> {
getAllObjects()
},[getAllObjects, objects]);
不要将整个对象传递给依赖项数组,而是确保您只传递名称。您可以通过返回名称来执行此操作
const [objects, setObjects] = useState([])
useEffect(()=> {
getAllObjects()
}, [getAllObjects, ...objects.map(item => item.name)])
一个人可以这样做:
useEffect(()=> {
// do something
}, [values.name])
如果对象属性始终存在,这是一个很好的解决方案,但是如果该属性在某些时候不存在,则会出现引用错误。这种情况下的解决方法是检查钩子内是否存在 prop
useEffect(()=> {
if (values?.name) {
// do something
}
}, [values])