gpt4 book ai didi

reactjs - useState 和 useImmer 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 00:57:02 26 4
gpt4 key购买 nike

我见过一些 React 应用程序使用 useImmer 作为 Hook 而不是 useState .我不明白什么useImmer提供 useState才不是。

使用 useImmer 有什么好处?过度使用官方useState ?

最佳答案

简而言之, immer 有助于您改变嵌套/复杂数据结构的方式。看看这2种方式:
考虑以下对象:

const [product, updateProduct] = useState({
name: "Product 1",
SKU: "SKU-001",
availability: 30,
stock: [
{
id: 1,
store: "Store 1",
quantity: 10
},
{
id: 2,
store: "Store 2",
quantity: 20
}
]
});
为了操作它,您应该传递整个对象并覆盖您想要更新/更改的属性:
updateProduct({ ...product, name: "Product 1 - Updated" })
但是,如果您使用“useImmer”,您可以发送您想要更改的唯一部分,而 immer 本身将处理引擎盖下的其余部分。
  const [product, updateProduct] = useImmer({
name: "Product 1",
SKU: "SKU-001",
availability: 30,
stock: [
{
id: 1,
store: "Store 1",
quantity: 10
},
{
id: 2,
store: "Store 2",
quantity: 20
}
]
});
所以要更新:
updateProduct((draft) => { 
draft.name = "Product Updated" };
})
当您处理复杂的结构时它确实更有意义,假设您想更改“Stock”数组中的第二个对象,那么您可以使用:
updateProduct((draft) => {
draft.stock[1].quantity = 30;
})

关于reactjs - useState 和 useImmer 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61669930/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com