通过ToolbarAndroid => onIconClicked显示DrawerLayoutAndroid

Mas*_*low 18 drawerlayout react-native

我是React native(和React)的新手,我正在玩它.

我设法添加一个DrawerLayout,我可以从屏幕左侧拖动.但是,当我点击ToolbarAndroid中的菜单图标时,我想打开它.

我试图使用"refs"但它似乎不起作用

我希望我足够清楚.

谢谢

kzz*_*zzf 33

你应该像你提到的那样使用"refs".为此,您的抽屉组件设置了"ref"属性:

<DrawerLayoutAndroid
   ...
   ref={'DRAWER_REF'}
   ...
/>
Run Code Online (Sandbox Code Playgroud)

然后在你的组件中使用this.refs来访问它并调用openDrawercloseDrawer在那个引用上(例如你可能想要有一个Touchable元素来触发这个调用):

this.refs['DRAWER_REF'].openDrawer();
Run Code Online (Sandbox Code Playgroud)

  • 我得到"未定义不是一个对象(评估'this.refs ['DRAWER_REF']') (4认同)
  • `this.refs ['DRAWER_REF']`只能从渲染抽屉的组件中访问.如果要从视图层次结构中的某个组件访问它,您需要:将视图层次结构中的ref作为属性传递,或者将回调方法传递给将在抽屉父组件级别上定义的视图层次结构 (2认同)

Tia*_*vêa 8

使用ReactNative示例,您可以这样做:

var DrawerTest = React.createClass({
  openDrawer:function() {
    this.refs['DRAWER'].openDrawer()
  },
  render: function() {
    var navigationView = (
        <View style={{flex: 1, backgroundColor: '#fff'}}>
          <Text style={{margin: 10, fontSize: 15, textAlign: 'left'}}>I'm in the Drawer!</Text>
        </View>
    );
    return (
          <DrawerLayoutAndroid
              drawerWidth={300}
              ref={'DRAWER'}
              drawerPosition={DrawerLayoutAndroid.positions.Left}
              renderNavigationView={() => navigationView}>
            <View style={{flex: 1, alignItems: 'center'}}>
              <Text style={{margin: 10, fontSize: 15, textAlign: 'right'}}>Hello</Text>
              <Text style={{margin: 10, fontSize: 15, textAlign: 'right'}}>World!</Text>
              <TouchableHighlight onPress={this.openDrawer}>
                <Text>{'Open Drawer'}</Text>
              </TouchableHighlight>
            </View>
          </DrawerLayoutAndroid>
    );

  }
});
Run Code Online (Sandbox Code Playgroud)

完整文件要点