MobX 可变性与不变性
MobX Mutability vs Immutability
为什么 MobX 鼓励在他们的文档中使用可变对象?
但是,我看到了一个关于 MobX 的教程:http://orlandohamsho.com/javascript/mobx-react-tutorial-building-first-application/
而且,他在教程中使用了不可变方法而不是可变方法(见下文)。
@action setUsers = (users) => { this.users = [...users];
(而不是推送)
我也认为不变性方法更好(这样 React.PureComponent 就可以工作,这意味着优化性能)
为什么 MobX 鼓励改变对象?我应该使用什么方法?
这真的取决于你做什么。 MobX 没有使用不可变的概念,事实上,我不认为在 MobX 中使用不可变数据是明智的。例如,如果你将一个项目添加到一个可观察数组,如果你以不可变的方式进行,整个数组将重新渲染。如果您只是简单地将项目推入数组,则只会呈现添加的项目。可能有些情况下你需要 return 一个新数组而不是改变它,但在大多数情况下,MobX 不应该使用不可变的方式来更新可观察数据。
为什么 MobX 鼓励在他们的文档中使用可变对象?
但是,我看到了一个关于 MobX 的教程:http://orlandohamsho.com/javascript/mobx-react-tutorial-building-first-application/
而且,他在教程中使用了不可变方法而不是可变方法(见下文)。
@action setUsers = (users) => { this.users = [...users];
(而不是推送)
我也认为不变性方法更好(这样 React.PureComponent 就可以工作,这意味着优化性能)
为什么 MobX 鼓励改变对象?我应该使用什么方法?
这真的取决于你做什么。 MobX 没有使用不可变的概念,事实上,我不认为在 MobX 中使用不可变数据是明智的。例如,如果你将一个项目添加到一个可观察数组,如果你以不可变的方式进行,整个数组将重新渲染。如果您只是简单地将项目推入数组,则只会呈现添加的项目。可能有些情况下你需要 return 一个新数组而不是改变它,但在大多数情况下,MobX 不应该使用不可变的方式来更新可观察数据。