const arr = [1, 2, 3];
const [listData] = useState(arr);
// 稍后修改 arr
arr.push(4);
// React 的 listData 状态不会反映这个变化
console.log(listData); // 输出:[1, 2, 3]
在 React 中,当你使用 useState
钩子来初始化状态时,状态的初始值是被“冻结”在组件首次渲染时的。这意味着,如果你使用一个变量 arr
来初始化状态 listData
,那么这个 arr
的值在组件的整个生命周期中都不会改变,即使 arr
本身在组件外部被修改了。
在上面的代码中,即使 arr
被修改了,listData
的值也不会改变,因为它在组件首次渲染时已经被设置了初始值。所以是假深拷贝,并不是真的深拷贝