我在使用mobx和react配合时,修改数据直接就是this.props.store.a = 'hello' 这样也是可以工作的,但是教程说推荐使用action来修改,使用action有什么好处吗?像我这样修改一个值要写一个action的话,那更改每一个都要写一个action不是很麻烦?
我在使用mobx和react配合时,修改数据直接就是this.props.store.a = 'hello' 这样也是可以工作的,但是教程说推荐使用action来修改,使用action有什么好处吗?像我这样修改一个值要写一个action的话,那更改每一个都要写一个action不是很麻烦?
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
1.闻所未闻。我不知道你有没有用过react,你直接修改一个组件里的state,this.state.name = 'a',也是可以的,但是你这样做过吗?肯定是不行的,因为你这样就算改了state,也不会触发react的重新渲染,反而会导致数据和视图不一致。所以react提供里setState这个api用来改变state,这样可以重新触发react的渲染周期
2.mobx和redux以及state一样,都是储存数据的对象而已。但是mobx和redux是全局的,说到底也只是个对象,你这么改它当然能改,但只是改了而已,并没有触发mobx和redux的一些动作。所以从这个意义上来说,action就像是setState,是改变这个状态树的方式,通过调用action触发reducer,从而改变数据树。这个可以保证mobx或redux正常工作,且数据和视图保持一致。
3.不是修改一个值写一个action,而是一个action对应一件事。不同的事对应不同的action,触发对应的reducer,这样可以让mobx或redux知道,是什么动作导致了什么结果。