首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React Native "react-native-side-menu“

React Native "react-native-side-menu“
EN

Stack Overflow用户
提问于 2015-12-21 07:18:37
回答 1查看 662关注 0票数 0

我试着让侧边菜单工作,我得到了它的功能,但现在我正在努力使onPress功能与一个按钮点击!

“未定义不是对象(计算'this.props.menuActions.toggle')”

它在TouchableOpacity中!

代码语言:javascript
复制
'use strict';

var React = require('react-native');
var SideMenu = require('react-native-side-menu');

var {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  Image,
  ScrollView,
  TouchableOpacity,
} = React;

var Menu = React.createClass({
  render: function() {
    return (
      <ScrollView style={styles.menu}>
      <View style={styles.avatarContainer}>
        <image
          style={styles.avatar}
          source={{
            uri: 'http://pickaface.net/includes/themes/clean/img/slide2.png'
          }}/>
          <Text style={styles.yourname}> Your Name </Text>
        </View>
        <Text style={styles.menuitem}> About </Text>
        <Text style={styles.menuitem}> Music </Text>
      </ScrollView>
    );
  }
});

var Button = React.createClass({
  render: function() {
    return (
      <TouchableOpacity
        onPress={this.props.menuActions.toggle}>
        <Text style={this.props.style}>{this.props.children}</Text>
      </TouchableOpacity>
    );
  }
})

var Layout = React.createClass({
  render: function() {
    return (
      <SideMenu menu={<Menu />}>
        <View style={styles.container}>
          <Text style={styles.welcome}>
            Welcome To React Native!
          </Text>
        </View>
        <Button style={styles.button}> Open Menu </Button>
      </SideMenu>
    );
  }
});

var styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  },
});

AppRegistry.registerComponent('Tabs_Boilerplate', () => Layout);
EN

回答 1

Stack Overflow用户

发布于 2015-12-21 10:01:32

您必须告诉react,您将希望使用上下文中的menuActions对象

代码语言:javascript
复制
var Button = React.createClass({
    contextTypes = {
        menuActions: React.PropTypes.object.isRequired
    },

    render: function() {
        return (
            <TouchableOpacity
                onPress={this.context.menuActions.toggle}>
                <Text style={this.props.style}>{this.props.children}</Text>
            </TouchableOpacity>
        );
    }
})

或者,他们最近添加了通过道具控制菜单是否打开的功能。只需在侧面菜单对象上添加一个"isOpen“属性,并根据您是否希望打开菜单将该属性更新为true/false即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34386997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档