Я пытаюсь передать один магазин mobX другому, следующие коды моего магазина:
Класс магазина 1:
export default class APIKeyStore
{
@persist @observable apiKey = '****';
}
Store Class 2:
export default class ServiceCalls
{
@persist @observable apiKeysStore;
constructor(apiStore)
{
this.apiKeysStore = apiStore;
console.log('constructor', this.apiKeysStore.apiKey);
}
@action async initializeApp()
{
console.log('initializeApp', this.apiKeyStore.apiKey);
}
}
index.js:
import APIKeyStore from './models/APIKeyStore';
import ServiceCalls from './models/ServiceCalls';
const serviceCalls = new ServiceCalls(new APIKeyStore())
const stores = {
serviceCalls: serviceCalls
}
export default
{
...stores
};
Файл компонента, в который я вызываю метод initializeApp () магазина 2:
@inject('serviceCalls')
@observer
class ZeroStepScreen extends Component
{
async componentWillMount()
{
try
{
console.log('componentWillMount', this.props.serviceCalls.apiKeysStore.apiKey);
await this.props.serviceCalls.initializeApp();
}
catch(e)
{
console.log(e);
}
}
}
В вышеприведенных классах у меня есть три объявления console.log(..)
- где он сообщает правильные результаты из constructor
2-го хранилища и componentWillMount()
методов компонента.
При вызове одного и того же метода initializeApp()
класса 2-го магазина this.apiKeysStore.apiKey
всегда выдает мне, что не может прочитать свойство undefined.
конструктор 2-го класса - console.log(this.apiKeysStore.apiKey)
- ОК
ZeroStepScreen - console.log(this.props.serviceCalls.apiKeysStore.apiKey)
- ОК
2nd Class 'initializeApp () - console.log(this.apiKeysStore.apiKey)
- Ошибка
Я не могу понять, что я делаю неправильно, что 2-й класс хранилища становится неопределенным при доступе к this.apiKeysStore.apiKey
, когда его конструктор сообщает правильно, класс компонента сообщает правильно.