抽屉反应原生地图项

时间:2021-06-15 20:25:52

标签: reactjs react-native

CustomDrawerContentt 组件从父组件接收 ...props。 父组件由一个 Drawer.Navigator 和一个 Drawer.Screen 组成,发送给子组件的 props 是每个 Drawer.Screen 的屏幕。 我想要做的不是从父组件传递 ... 道具,我想直接将这些屏幕传递给 CustomDrawerContentt 组件。即用 myScreen 替换 ... props。

我的屏幕: 意见:{ 主页:AdminView, CrudCategories: CrudCategories, CrudItems: CrudItems, 列表项:列表项 },

CustomDrawerContentt 组件:(子组件)

      function CustomDrawerContentt(props) {
      return (
        <DrawerContentScrollView {...props}>

          <DrawerItemList {...props} />

          <DrawerItem
            label="Close drawer"
            onPress={() => props.navigation.dispatch(DrawerActions.closeDrawer())}
          />
          <DrawerItem
            label="Logged"
            onPress={() => props.navigation.dispatch(DrawerActions.toggleDrawer())}
          />
        </DrawerContentScrollView>
      )
    }

应用返回:

    return (
      userRoutes
        ?
        <Drawer.Navigator
          drawerPosition='right'
          drawerContent={(props) => <CustomDrawerContentt {...props} linksSidebar={userRoutes.sidebar}
          />}>
          <Drawer.Screen name="Inicio" component={RoutesModals} />

        </Drawer.Navigator>
        :
        <LoadingScreens />
    );

我以前试过它,它对我有用,但现在我遇到了......道具控制台给了我一个错误“TypeError:无法读取未定义的属性'路由'”

例如这个组件,其中 userRoutes.views 具有与上面提到的相同的结构 (myScreens),它对我来说效果很好。

    const RoutesViews = () => {
      return (
        <ViewsStack.Navigator initialRouteName="Home">
          {Object.entries({          
            ...(userRoutes.views),
          }).map(([name, component, index]) => (
            <ViewsStack.Screen key={name} name={name} component={component} options={name == 'Home' ? { headerShown: false } : { headerShown: true }} />
          ))}
        </ViewsStack.Navigator>
      )
    }

我想知道我是怎么做的而不是传递 我可以传递

1 个答案:

答案 0 :(得分:0)

您可以在 Redux 中存储您想要的任何内容并在子组件中访问它。处理起来会很容易。