微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否建议在 mobx 中对数组使用可变操作?

如何解决是否建议在 mobx 中对数组使用可变操作?

每次在react我都关心immutable array operations 避免通过 mutable operations

意外更改状态

我经常使用immutable operations

每当我需要添加新项目时,我都会使用它

[...myArr,'newItem'];

代替可变操作

myArr.push('newItem');

然而,我在 official doc 上看到了一个 mobx 的例子,我很惊讶,因为他们使用了 push() 方法

我是mobx的初学者,我害怕使用mutable operation
有没有人对此有想法?

我做错了吗,或者我可以在 mutable 上使用 react 进行 mobx 操作吗?

解决方法

这个操作有不同的语义和后果,一切都取决于你的目标是什么。

你需要通知所有 observables 这个数组发生了变化吗?然后创建新数组,像 [...myArr,'newItem']; 或任何其他您喜欢的方式。

你是否只需要向数组中添加一个项目?使用push

例如,每个具有该数组的 deps 的 useEffect 都会在第一种情况下做出反应,但是当您 push 时,在第二种情况下将没有任何影响:

useEffect(() => {
  // ...
},[myArray])
,

Spread operator with ... 创建一个新数组,需要分配一些内存。因此,与 push

相比,这有点昂贵
let arr = [1,2,3];
let arr2 = [...arr]; // like arr.slice()

arr2.push(4);
//  arr2 becomes [1,3,4]
//  arr remains unaffected

阅读更多here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。