native-side-menu这里是我的代码:
/**
* Sample React Native App
* https://github.com/facebook/react-native
*/
var React = require('react-native');
var SideMenu = require('react-native-side-menu');
var {
AppRegistry,
StyleSheet,
Text,
View,
Navigator,
} = React;
var ContentView = React.createClass({
render: function() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
</View>
);
}
});
var TestView = React.createClass({
render: function() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to another page.
</Text>
<Text style={styles.instructions}>
Testing react native side menu with navigator.
</Text>
</View>
);
}
});
var Menu = React.createClass({
about: function() {
this.props.menuActions.close();
this.props.navigator.push({
component: TestView,
title: 'Test View',
});
},
render: function() {
return (
<View style={styles.sidemenu}>
<Text style={styles.paddingMenuItem}>Menu</Text>
<Text onPress={this.about} style={styles.paddingMenuItem}>About</Text>
</View>
);
}
});
var FindWisely = React.createClass({
render: function() {
return (
<Navigator
initialRoute={{
component: Something,
title: 'Something',
}}
configureScene={() => {
return Navigator.SceneConfigs.FadeAndroid;
}}
renderScene={(route, navigator) => {
if(route.component) {
return React.createElement(route.component, { navigator });
}
}}/>
);
}
});
var Something = React.createClass({
render: function() {
var menu = <Menu navigator={this.props.navigator}/>;
return (
<SideMenu menu={menu}>
<ContentView/>
</SideMenu>
);
}
});
var styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
sidemenu: {
paddingTop: 50,
},
paddingMenuItem: {
padding: 10,
},
});
module.exports = FindWisely;
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到:
未定义的错误不是对象(评估'this.props.menuActions.close')
在最新版本的react-native-side-menu中,作者宣布他已从使用props for转向menuActionscontext。您可以在发行说明中阅读它,他甚至还给出了一个示例。
在您的情况下,您可以在代码中更改以下内容:
添加contextTypes到您的班级菜单。
Menu.contextTypes = {
menuActions: React.PropTypes.object.isRequired
};
Run Code Online (Sandbox Code Playgroud)
在你的 onPress 方法中像这样访问它:
this.context.menuActions.close();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7531 次 |
| 最近记录: |