小编Mic*_*shi的帖子

使用 React Hooks 更改数组中的对象属性不会引起重新渲染

当我使用 react 钩子更改数组中对象的属性时,该组件不会重新渲染。

我咨询了我的首席技术人员,他解释说 React 搜索“广度”而不是“深度”,这意味着 React 可以看到对象,但看不到对象属性的变化。

const [array, setArray] = useState([
        {'id': 0, text: '0'},
        {'id': 1, text: '1'},
        {'id': 2, text: '2'}
    ]);
Run Code Online (Sandbox Code Playgroud)

我希望这个组件在状态改变时重新渲染,但行为就像对象数组根本没有改变一样。

如果我创建一个数组副本作为 newArray 并更改 newArray[2].text = '3' 和 setArray(newArray),react 认为数组没有改变。因此,组件不会重新加载。

作为一种解决方法,我使用

const [trigger, setTrigger] = useState(false);
setTrigger(!trigger); 
Run Code Online (Sandbox Code Playgroud)

强制重新加载。然而,这是重新加载组件的一种hacky 方式,我想要一种更 React 的方式来做这件事。

先谢谢了!

reactjs react-hooks

5
推荐指数
1
解决办法
3781
查看次数

标签 统计

react-hooks ×1

reactjs ×1