从供应商类
问题描述:
我已经建立了一个非常简单的mobx店类反应母语mobx调用操作:从供应商类
import {observable, action} from 'mobx'
class TestStore {
@observable placeholder = 'Search In Me';
@action changeName(name) {
this.placeholder = name;
}
}
export default new TestStore();
我的父类(下图)是其中服务提供商设置。问题是在这个类中,我还需要跟踪当前活动标签的路由名称。这一切工作正常 - 我的问题是如何从父类调用商店中的changeName函数?目前this.props.store.changeName以未定义的形式返回。
import React, { Component } from 'react';
import { Root, Tabs } from './config/router';
import { Alert,View } from 'react-native';
import { Provider } from 'mobx-react';
import TestStore from './config/TestStore';
import {observer} from "mobx-react/native";
@observer class App extends Component {
_getCurrentRouteName(navState) {
if (navState.hasOwnProperty('index')) {
this._getCurrentRouteName(navState.routes[navState.index])
} else {
if (navState.routeName==='Tab 1') {
Alert.alert('Tab 1')
this.props.store.changeName('Tab 1')
}
if (navState.routeName==='Tab 2') {
Alert.alert('Tab 2')
}
if (navState.routeName==='Tab 3') {
Alert.alert('Tab 3')
}
if (navState.routeName==='Tab 4') {
Alert.alert('Tab 4')
}
}
}
render() {
return (
<Provider store={TestStore}>
<Root onNavigationStateChange={(prevState, newState) => {
this._getCurrentRouteName(newState)
}} />
</Provider>
)
}
}
export default App;
答
所以我解决了这个问题,重组我的应用程序和移动都升了一级 - index.js成为了继和在index.js进口原班回:
import React, { Component } from 'react';
import { Provider } from 'mobx-react';
import TestStore from './config/TestStore';
import Base from './app';
class App extends Component {
render() {
return (
<Provider store={TestStore}>
<Base />
</Provider>
)
}
}
export default App;