Как было предложено здесь в документации Mobx, я создал несколько магазинов следующим образом:
class bankAccountStore {
constructor(rootStore){
this.rootStore = rootStore;
}
...
class authStore {
constructor(rootStore){
this.rootStore = rootStore;
}
...
И, наконец, создание корневого хранилища следующим образом. Также я предпочитаю для создания дочерних хранилищ в конструкторе главного хранилища. Более того, я обнаружил, что иногда моему дочернему хранилищу необходимо наблюдать некоторые данные из родительского хранилища, поэтому я передаю это дочерним конструкторам.
class RootStore {
constructor() {
this.bankAccountStore = new bankAccountStore(this);
this.authStore = new authStore(this);
}
}
Предоставление приложению следующим образом:
<Provider rootStore={new RootStore()}>
<App />
</Provider>
И вводим в компонент вот так:
@inject('rootStore')
@observer
class User extends React.Component{
constructor(props) {
super(props);
//Accessing the individual store with the help of root store
this.authStore = this.props.rootStore.authStore;
}
}
Это правильный и эффективный способ каждый раз вставлять корневое хранилище в компонент, даже если ему нужна часть корневого хранилища? Если нет, то как внедрить Auth Store в пользовательский компонент?
РЕДАКТИРОВАТЬ: я ответил, завершая обсуждение github. Ссылка на обсуждение в ответе