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>
)
}
我想知道我是怎么做的而不是传递
答案 0 :(得分:0)
您可以在 Redux 中存储您想要的任何内容并在子组件中访问它。处理起来会很容易。