javascript - react 导航 v5 自定义抽屉路线

标签 javascript android react-native react-navigation

我创建了一个自定义抽屉组件,其中包含一些按钮来导航到其他屏幕,但我得到一个 类型错误:未定义不是对象(评估“_this.props”)当我单击抽屉按钮时。但如果我删除自定义抽屉组件,默认抽屉就可以正常工作。

如何解决问题?谢谢你

Drawer


import React from 'react';
import {createDrawerNavigator} from '@react-navigation/drawer';
import {NavigationNativeContainer} from '@react-navigation/native';

import p1 from '../wiki/p1';
import Main from '../wiki/Main';
import p2 from '../wiki/p2';

import CustomDrawer from '../screens/CustomDrawer';

const Drawer = createDrawerNavigator();

const DrawerNavigation = () => {
  return (
    <NavigationNativeContainer independent={true}>
      <Drawer.Navigator
        drawerType="front"
        initialRouteName="Main"
        drawerContent={() => <CustomDrawer />}>
        <Drawer.Screen name="Main" component={Main} />
        <Drawer.Screen name="p1" component={p1} />
        <Drawer.Screen name="p2" component={p2} />
      </Drawer.Navigator>
    </NavigationNativeContainer>
  );
};

导出默认 DrawerNavigation;

CustomDrawer


import React, {Component} from 'react';
import {Text, View, Button} from 'react-native';

const CustomDrawer = () => {
  return (
    <View>
      <Button
        title="Main"
        onPress={() => this.props.navigation.navigate('Main')}
      />

      <Button
        title="p1"
        onPress={() => this.props.navigation.navigate('p1')}
      />

      <Button
        title="p2"
        onPress={() => this.props.navigation.navigate('p2')}
      />

    </View>
  );
};

export default CustomDrawer;

p1


import React, {Component} from 'react';
import {Text, View, Button} from 'react-native';

const p1 = ({navigation}) => {
  return (
    <View>
      <Text> p1 </Text>
      <Button title="GoBack" onPress={() => navigation.navigate('Main')} />
      <Button title="Goback" onPress={() => navigation.goback()} />
    </View>
  );
};

export default p1;

最佳答案

你必须通过props到您的自定义抽屉如下:

<NavigationNativeContainer independent={true}>
  <Drawer.Navigator
    drawerType="front"
    initialRouteName="Main"
    drawerContent={(props) => <CustomDrawer {...props} />}> // pass props here
    <Drawer.Screen name="Main" component={Main} />
    <Drawer.Screen name="p1" component={p1} />
    <Drawer.Screen name="p2" component={p2} />
  </Drawer.Navigator>
</NavigationNativeContainer>

关于javascript - react 导航 v5 自定义抽屉路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59944263/

相关文章:

java - 未找到 ID 为 'com.google.gms.google-services' 的插件。 [ 安卓 ]

reactjs - 如何使百分比按钮在 react-native 中工作

javascript - 在react-native中嵌套firestore onSnapshot监听器?

javascript - void 类型上不存在属性,尽管我正在返回一个 Promise

javascript - 来自使用 jQuery insideHTML 的页面的 PHP file_get_contents

java - 使用安全的 SSL 连接保存 session

java - 无法按照我想要的方式拆分字符串

react-native - undefined 不是一个对象(评估 'RNGestureHandlerModule.State'

javascript - Uncaught Error : [$injector:modulerr] using Angular JS and highcharts-ng

javascript - 异步函数返回 undefined variable