Mobx State Tree вложенных хранилищ инъекций

У меня есть одна проблема с использованием mobx-state-tree. Если у нас есть вложенные магазины со следующей структурой

login(store):{
    //some primitives
},
mainPage(store):{
    slider:(store):{
        //some primitives
    },
    userList:(store):{
        //some primitives
    },
    //some primitives
},

Как мы можем вводить просто userList хранить. Я пытался сделать так:

@inject('mainPage.userList')

Но выдает ошибку

1 ответ

Вы не можете добавить подстарку напрямую, не имея прямой ссылки на нее. Вы можете просто вставить mainPage и получить к нему доступ в конструкторе.

@inject('mainPage')

затем

constructor(props) {
    super(props)
    this.userList = this.props.mainPage.userList
}

Одним из улучшений было бы иметь rootStore и внедрять его в каждый компонент только через провидора. Это упрощает тестирование, и каждый компонент может иметь доступ ко всему дереву.

Взгляните на документацию по началу работы, и вы можете увидеть различные примеры использования rootStore:

https://github.com/mobxjs/mobx-state-tree/blob/master/docs/getting-started.md

Другие вопросы по тегам