1
我有一个NavBarRouteMapper对象,我传递给我的导航栏。然而,在我需要访问状态的按钮的onpress函数中,但我不确定如何将“this”绑定到对象,因为它是非函数。相关代码如下将'this'绑定到NavigationBarRouteMapper无功能
class app extends Component {
state: {
sideMenuIsOpen: boolean,
};
constructor(props: Object) {
super(props);
this.state = {
sideMenuIsOpen: false,
};
};
static NavigationBarRouteMapper = {
LeftButton(route, navigator, index, navState) {
if (index > 0) {
return (
<SimpleButton
// TODO: Make this work, Menu button needs to go to this
// The problem is here. this.state is undefined
onPress={console.log(this.state)}
customText="Back"
style={styles.navBarLeftButton}
textStyle={styles.navBarButtonText}
/>
);
}
},
RightButton(route, navigator, index, navState) {
// TODO change add button for admins
switch (route.title) {
case "Login":
return null;
default:
return (
<SimpleButton
onPress={() => {
navigator.push({
title: "Profile",
component: Profile,
});
}}
customText="Add"
style={styles.navBarRightButton}
textStyle={styles.navBarButtonText}
/>
);
}
},
Title(route, navigator, index, navState) {
return (
<Text style={styles.navBarTitleText}>{route.title}</Text>
);
},
};
render() {
return (
<SideMenu
menu={<Menu navigate={this.navigate} />}
isOpen={this.state.sideMenuIsOpen}
>
<Navigator
ref="rootNavigator"
initialRoute={{
title: "Login",
component: LoginScene,
navigator: this.refs.rootNavigator,
}}
renderScene = {this.renderScene}
navigationBar={
<Navigator.NavigationBar
// Since this is an object, I can't bind 'this' to it,
// and the documentation calls for it to be passed an object
routeMapper={app.NavigationBarRouteMapper}
style={styles.navBar}
/>
}
/>
</SideMenu>
);
};
}
的问题是不与<使用SimpleButton>类,它是我不能将状态传递到NavigationBarRouteMapper以任何方式,我知道的onclick发生。 – omriki
我不确定你使用的是什么样的模式,你最外面的组件应该有状态。如果你使用的是流量模式,你应该有触发状态变化的动作,这样你的onclick会把调度方法激发到一个商店,这个商店会改变状态,或者是出现这种情况,但我现在还不是100%熟悉流量。 –
最外面的组件确实有一个状态。然而,当在NavigationBarRouteMapper中调用'this'时,它将获得状态而不是最外面的组件。由于我无法将最外层的对象绑定到RouteMapper,因此我不确定如何将道具传递给它,因为它不是React组件。 – omriki