Reactjs MobX观察者重新渲染目标

时间:2018-08-29 05:48:01

标签: reactjs react-native redux mobx

我是新来的反应者,我刚刚开始使用状态管理工具Mobx。我在这里和那里都在阅读有关mobx的信息,但是有一些我不理解的概念。

  1. 我知道每次使用setState更改本地状态时,react都会重新渲染。它的重新渲染目标是其局部状态已更改的组件(我对吗?)。但是对于mobx,当商店的observable属性已通过组件中的操作更改时,我不确定在此重新渲染哪个组件,因为如上例所示,此更改的属性不是“ local”。

    例如,如果我在名为City的组件中更改了CityStore类中定义的可观察属性(假定我也有其他组件),那么哪个组件将被重新渲染?我在那改变了可观察的属性,城市部分会重新渲染吗?还是使用该可观察属性的所有组件都被重新渲染?我想知道使用@observer装饰重新渲染组件的机制。

  2. 使用提供程序和@inject传递创建的mobx存储。我不太确定@inject做什么。如果我想在城市组件中使用名为cityStore的商店,请执行以下操作:<Provider city = {cityStore}> <city/> </Provider>

    然后,组件city及其所有子组件可以访问和更改cityStore。那为什么我已经使用过provider的情况下为什么还要为每个希望使用cityStore的组件分别放置@inject?只是语法,所以provider和@inject总是必须在一起吗?因此,例如,如果我在父组件city上调用了<Provider city = {cityStore}> <city/> </Provider>,并且没有在city组件的某些子组件中使用@inject,那么该组件将无法访问cityStore?

问题描述有点长,但是非常感谢您知道答案!

0 个答案:

没有答案