有没有办法在RouteMapper中获取this.context
?
我可以在this.context.openMenu
中致电Playground
。
我有以下内容:
class App extends Component {
...
renderScene(route, navigator) {
return (
<Playground navigator={navigator} />
)
}
render() {
return (
<Navigator
ref="nav"
renderScene={this._renderScene.bind(this)} />
)
}
}
App.childContextTypes = {
openMenu: React.PropTypes.func
}
这是游乐场:
class Playground extends Component {
...
render() {
return (
<Navigator
renderScene={this.renderScene.bind(this)}
navigator={this.props.navigator}
navigationBar={
<Navigator.NavigationBar style={Styles.navBar}
routeMapper={PlaygroundMapper} />
} />
)
}
}
Playground.contextTypes = {
openMenu: React.PropTypes.func
}
然后PlaygroundMapper:
export default {
LeftButton(route, navigator, index, navState) {
return (
<TouchableOpacity onPress={() => this.context.openMenu}>
<Text>Menu</Text>
</TouchableOpacity>
)
},
...
}
答案 0 :(得分:0)
我已经得出了这个结论。
由于我可以访问this.context
中的Playground
,因此我执行了此操作:
<Navigator.NavigationBar
style={Styles.navBar}
routeMapper={ArticlesRouteMapper(this.context)} />
} />
然后在RouteMapper中,我这样做了:
export default (context) => ({
LeftButton(route, navigator, index, navState) {
return <Hamburger _onPress={() => context.openMenu()} />
},
})
有效,但不确定这是否是正确的方法。