Основная цель, на которую я хочу обратить внимание, - отдать предпочтение общению между магазинами, а не третьему, а не прямому, так как это позволит вам лучше изолировать магазины друг от друга. Я не знаю специфику вашего приложения, но это процесс разработки, вы видите, что что-то должно работать по-другому - ваш рефакторинг. Да, это накладные расходы - но если ваши болячки зависят друг от друга - ожидайте больших неприятностей, когда вам придется рефакторинг один или удалить. Когда это может быть недопустимо для приложения с 2 магазинами, но если у вас есть 20 - это будет иметь значение.
редложено здесь, в 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 в пользовательский компонент?