Javascript DisableOpen手势隐藏不起作用
我们在应用程序中使用导航抽屉来显示侧菜单。 在一些屏幕中,我们不希望在用户尝试左/右手势时显示此导航抽屉 因此,为此,我们试图隐藏一个特定的屏幕-手势/导航抽屉-但它不起作用。 当用户滑动(左/右)时,抽屉仍然打开Javascript DisableOpen手势隐藏不起作用,javascript,react-native,navigation-drawer,gesture,Javascript,React Native,Navigation Drawer,Gesture,我们在应用程序中使用导航抽屉来显示侧菜单。 在一些屏幕中,我们不希望在用户尝试左/右手势时显示此导航抽屉 因此,为此,我们试图隐藏一个特定的屏幕-手势/导航抽屉-但它不起作用。 当用户滑动(左/右)时,抽屉仍然打开 const AppNavigator=StackNavigator( { //抽屉:{屏幕:抽屉}, 登记册:{ 屏幕:寄存器, 导航选项:({navigation})=>({ 抽屉锁定模式:“锁定关闭”, }) }, TabHome:{screen:TabHome}, 相册:{屏
const AppNavigator=StackNavigator(
{
//抽屉:{屏幕:抽屉},
登记册:{
屏幕:寄存器,
导航选项:({navigation})=>({
抽屉锁定模式:“锁定关闭”,
})
},
TabHome:{screen:TabHome},
相册:{屏幕:相册},
脱机内容:{屏幕:脱机内容},
更改密码:{屏幕:更改密码},
播放器:{screen:Player},
},
{
initialRouteName:“TabHome”,
//标题:空
}
);
我们已经尝试了drawerLockMode:“锁定关闭”
和禁用打开手势:true
但一切都不起作用
注意:我使用的是“反应导航”:“^3.0.9”
版本
有没有建议禁用通过手势打开导航抽屉?你能试试这段代码吗
const AppNavigator = StackNavigator(
{
// Drawer: { screen: Drawer },
Register: {
screen: Register
},
TabHome: { screen: TabHome },
Album: { screen: Album },
offlineContent: { screen: offlineContent },
changePassword: { screen: changePassword },
Player: {screen: Player},
},
{
initialRouteName: "TabHome",
// header: null
}
);
AppNavigator.navigationOptions = ({ navigation }) => {
const navigationOptions = {};
if (getCurrentRouteName(navigation.state) === 'Register') {
navigationOptions.drawerLockMode = 'locked-closed';
}
return navigationOptions;
};
或者如果您的react导航版本为V2
const Stack=createStackNavigator({
注册:注册,
},
{
抽屉锁定模式:“锁定关闭”
}
);
getCurrentRouteName函数
getCurrentRouteName(导航状态){
if(navState.hasOwnProperty('index')){
this.getCurrentRouteName(navState.routes[navState.index])
}否则{
console.log(“当前路由名称:”,navState.routeName)
//然后可以将其保存到状态(我使用了redux)
存储调度(setCurrentRouteName(navState.routeName))
}
}
你能试试这个代码吗
const AppNavigator = StackNavigator(
{
// Drawer: { screen: Drawer },
Register: {
screen: Register
},
TabHome: { screen: TabHome },
Album: { screen: Album },
offlineContent: { screen: offlineContent },
changePassword: { screen: changePassword },
Player: {screen: Player},
},
{
initialRouteName: "TabHome",
// header: null
}
);
AppNavigator.navigationOptions = ({ navigation }) => {
const navigationOptions = {};
if (getCurrentRouteName(navigation.state) === 'Register') {
navigationOptions.drawerLockMode = 'locked-closed';
}
return navigationOptions;
};
或者如果您的react导航版本为V2
const Stack=createStackNavigator({
注册:注册,
},
{
抽屉锁定模式:“锁定关闭”
}
);
getCurrentRouteName函数
getCurrentRouteName(导航状态){
if(navState.hasOwnProperty('index')){
this.getCurrentRouteName(navState.routes[navState.index])
}否则{
console.log(“当前路由名称:”,navState.routeName)
//然后可以将其保存到状态(我使用了redux)
存储调度(setCurrentRouteName(navState.routeName))
}
}
您能否解释第一种方法,以及它的作用?我们正在stacknavigator中禁用该手势。您可以在已定义的AppNavigator代码下添加AppNavigator.navigationOptions。您的意思是我必须添加避免手势所需的所有屏幕吗?getCurrentRouteName Get undefinedStill getCurrentRouteName在AppNavigator.navigationOptions=({navigation})=>{method您能解释第一个方法吗?它将做什么?我们正在stacknavigator中禁用该手势。您可以在定义的AppNavigator代码下添加AppNavigator.navigationOptions。您的意思是我必须添加所有需要避免手势的屏幕吗?getCurrentRouteName Get undefinedStill getCurrentRouteName在Ap中显示undefinedpNavigator.navigationOptions=({navigation})=>{method