我想在场景中访问侧边菜单后禁用导航器上从左弹出手势滑动。我不想在场景首次渲染时禁用它,只有在侧边菜单打开时才会禁用它。我有一个可以调用的onOpen
函数,但我不知道如何在不推送其他路由的情况下以编程方式更改导航手势。
我尝试像这样设置导航器的配置场景道具:
configureScene={() => {
return this.state.swipeBackNavigation ? FloatFromRight : Navigator.SceneConfigs.FloatFromRight;
}
并更改状态,但组件不会重新渲染
想法将不胜感激
我相信您可以将手势设置为 null(有效地禁用它):
gestures: {}
我目前无法对此进行测试,但我怀疑它会起作用(如果我没有在某处搞砸一些语法):
export default class Foo extends Component {
constructor(props){
super(props);
this.state = {
//initialize gestureChoice
gestureChoice: {},
}
}
disablePop(){
setState({ gestureChoice:{ gestures:{} } });
}
enablePop(){
setState({gestureChoice: ...Navigator.SceneConfigs.FloatFromRight});
}
render(){
return(
<Navigator
renderScene={(route, navigator) =>
return <SomeScene navigator={navigator} {...route.passprops} />
}
configureScene={(route, routeStack) =>
this.state.gestureChoice;
)}
/>
);
}
}
这个想法是,您可以随时使用enablePop()
和disablePop()
。
这个线程可能会有所帮助: https://github.com/facebook/react-native/issues/1014