无法从堆栈打开抽屉 header React native v5
Can't open Drawer from stack header React native v5
我想从我的 header 打开我的抽屉,但我想不通,看看我的代码:
import { NavigationContainer,useNavigation,DrawerActions } from '@react-navigation/native';
.
.
.
render({
return (
<Root>
<NavigationContainer ref={navigationRef}>
<Stack.Navigator >
<Stack.Screen name="Mediclic" component={AppDraw}
options={
headerLeft: () =>
<TouchableOpacity style={{ marginLeft: 5 }} onPress={() => navigation.openDrawer() }>
<MaterialIcons name='menu' size={28} color={'white'} />
</TouchableOpacity>,
}
} />
</Stack.Navigator>
</NavigationContainer>
);
}
}
const AppDraw = () =>
<Drawer.Navigator>
<Drawer.Screen name="Accueil" component={AccueilScreen} />
<Drawer.Screen name="A propos" component={AboutScreen} />
</Drawer.Navigator>
如您所见,堆栈导航器和抽屉位于同一个文件中,但仍然无法正常工作
就我而言,我得到 TypoErro:undefined is not an object( navigation.opendrawer)
我也试过 dispatch 但是没用
有人可以帮助我吗?我已经为此苦苦挣扎了一个多星期!
谢谢
将要打开抽屉的屏幕设为抽屉子级
假设我想在 AccueilScreen 中打开抽屉。
我在你的代码中做了什么
使用
children={this.AppDraw} 而不是 component={AppDraw}
然后写
<Stack.Screen name="Accueil" children={this.AppDraw}
而不是
<Stack.Screen name="Mediclic" component={AppDraw}
试试这个,希望对你有帮助
import { NavigationContainer,useNavigation,DrawerActions } from '@react-navigation/native';
.
.
.
render({
return (
<Root>
<NavigationContainer ref={navigationRef}>
<Stack.Navigator >
<Stack.Screen name="Accueil" children={this.AppDraw}
options={
headerLeft: () =>
<TouchableOpacity style={{ marginLeft: 5 }} onPress={() => navigation.openDrawer() }>
<MaterialIcons name='menu' size={28} color={'white'} />
</TouchableOpacity>,
}
} />
</Stack.Navigator>
</NavigationContainer>
);
}
}
AppDraw = () =>
<Drawer.Navigator>
<Drawer.Screen name="Accueil" component={AccueilScreen} />
<Drawer.Screen name="A propos" component={AboutScreen} />
</Drawer.Navigator>
我只用这个就解决了这个问题:
onPress={() =>
navigation.dispatch(DrawerActions.toggleDrawer()) }
如果有人使用抽屉导航V5,我推荐使用这个!
我想从我的 header 打开我的抽屉,但我想不通,看看我的代码:
import { NavigationContainer,useNavigation,DrawerActions } from '@react-navigation/native';
.
.
.
render({
return (
<Root>
<NavigationContainer ref={navigationRef}>
<Stack.Navigator >
<Stack.Screen name="Mediclic" component={AppDraw}
options={
headerLeft: () =>
<TouchableOpacity style={{ marginLeft: 5 }} onPress={() => navigation.openDrawer() }>
<MaterialIcons name='menu' size={28} color={'white'} />
</TouchableOpacity>,
}
} />
</Stack.Navigator>
</NavigationContainer>
);
}
}
const AppDraw = () =>
<Drawer.Navigator>
<Drawer.Screen name="Accueil" component={AccueilScreen} />
<Drawer.Screen name="A propos" component={AboutScreen} />
</Drawer.Navigator>
如您所见,堆栈导航器和抽屉位于同一个文件中,但仍然无法正常工作 就我而言,我得到 TypoErro:undefined is not an object( navigation.opendrawer)
我也试过 dispatch 但是没用
有人可以帮助我吗?我已经为此苦苦挣扎了一个多星期! 谢谢
将要打开抽屉的屏幕设为抽屉子级 假设我想在 AccueilScreen 中打开抽屉。
我在你的代码中做了什么
使用
children={this.AppDraw} 而不是 component={AppDraw} 然后写
<Stack.Screen name="Accueil" children={this.AppDraw}
而不是
<Stack.Screen name="Mediclic" component={AppDraw}
试试这个,希望对你有帮助
import { NavigationContainer,useNavigation,DrawerActions } from '@react-navigation/native';
.
.
.
render({
return (
<Root>
<NavigationContainer ref={navigationRef}>
<Stack.Navigator >
<Stack.Screen name="Accueil" children={this.AppDraw}
options={
headerLeft: () =>
<TouchableOpacity style={{ marginLeft: 5 }} onPress={() => navigation.openDrawer() }>
<MaterialIcons name='menu' size={28} color={'white'} />
</TouchableOpacity>,
}
} />
</Stack.Navigator>
</NavigationContainer>
);
}
}
AppDraw = () =>
<Drawer.Navigator>
<Drawer.Screen name="Accueil" component={AccueilScreen} />
<Drawer.Screen name="A propos" component={AboutScreen} />
</Drawer.Navigator>
我只用这个就解决了这个问题:
onPress={() =>
navigation.dispatch(DrawerActions.toggleDrawer()) }
如果有人使用抽屉导航V5,我推荐使用这个!