MobX, магазин недоступен, убедитесь, что он предоставляется каким-то провайдером - PullRequest
0 голосов
/ 01 февраля 2019

ПРИМЕЧАНИЕ: Даже если у меня есть несколько похожих вопросов, в моем случае нет удовлетворительного ответа !!!

В моем проекте "Реактивный" я использую mobx в качестве управления состоянием.Некоторая часть моего файла Login.js выглядит следующим образом:

       export default class Login extends React.Component {
          @observable isLogged = true;
        .
        .
        .
        .
    render() {
        return (
          <Provider store = {Login}>
            <View style={styles.container}>

            <TextInput
              style={styles.input}
              placeholder='Kullanıcı Adı'
              autoCapitalize="none"
              placeholderTextColor='white'
              onChangeText={val => this.onChangeText('username', val)}


       /> 
        .
        .
        .

А некоторая часть моего файла App.js выглядит следующим образом:

    .
    .
    .

    @inject('store')
    @observer
    export default class App extends React.Component{
      // @action(self =>({
      //   changeControl(){console.log("CHANGE CONTROL CALISTI")}
      // }))  

      state = {
      control : false
     }
     render(){

        console.log("ISLOGGED DEGERI:" ,Login.isLogged)

        if (this.props.store.isLogged)
        {
          return (
            <AppDrawerNavigatorLogged/ >
          );
        }
        else
        {
          return (
            <AppDrawerNavigatorNotLogged/ >
          );
        }

      }

    }
    .
    .
    .

Как мне кажется, у меня естьнаблюдаемая переменная isLogged, и я использую провайдера и хранилище в файле Login.js, и я хочу использовать наблюдаемую переменную isLogged в моем файле App.js.Однако, даже если я использую провайдера в файле Login.js, я получаю сообщение об ошибке, подобное следующему:

Ошибка: Инжектор MobX: Магазин 'store' недоступен!Убедитесь, что он предоставлен каким-либо провайдером.

Есть ли кто-нибудь, кто сталкивался с этой проблемой или имеет какие-либо идеи?Спасибо ...

1 Ответ

0 голосов
/ 02 февраля 2019

Кажется, вам не хватает некоторых основных понятий mobx и mobx-react.Я бы порекомендовал сначала исправить некоторые ошибки:

  • <Provider> компонент должен обернуть все ваше приложение.В большинстве случаев это около <App> компонента (<Provider store={loginStore}><App/></Provider>)
  • Login, в вашем случае это React.Component - это не правильно.Вам необходимо создать класс Login и передать его экземпляр Provider

Пример:

class Login {
    @observable isLogged = true;

    // some methods for log in
}

const loginStore = new Login();

class App extends React.Component {
...

   render(){
       return (
           <Provider store={loginStore}>
               <App />
           </Provider>
       ) 
   }
}

...