我很难理解mobx-react/native
包中Provider
和@inject
的角色。
大多数使用 mobx 的示例Provider
使用它来提供全局存储。这样:
import { Provider as MobXProvider, observer } from 'mobx-react/native';
import myStore from './stores/myStore.js'
@observer
export default class App extends Component{
render() {
return(
<MobXProvider store={myStore)>
<NavigationStackOrSomethingElse />
</MobXBrovider>)
}
}
Provider
到底有什么用?据我了解,我需要它将商店@inject
到后续视图的props
中。有没有办法在单个控制器中提供和使用存储?这样:
import { Provider as MobXProvider, observer } from 'mobx-react/native';
import myStore from './stores/myStore.js'
@inject('store') // <-- doesn't work
@observer
export default class SomeSmallView extends Component{
render() {
return(
<MobXProvider store={myStore)>
<MyViewThings />
</MobXBrovider>)
}
myAction() {
this.props.state.doSomeStateThings();
}
}
如果使用多个商店,如何使用提供程序?它们是否都在根屏幕中提供?它们是否由想要使用它的组件的父屏幕提供?
因此,事实证明,您始终在开始时提供要在应用程序中使用的所有商店:
<Provider chatStore={chatStore} wallStore={wallStore}>
...
</Provider>
然后简单地使用@inject
将它们注入到使用它们的组件中。