React-navigation:如何在init后禁用TabNavigator上的滑动?

时间:2017-03-09 15:15:43

标签: react-native react-navigation

我设置TabNavigator就像这样:

class RNNavigation extends Component {

  constructor(props) {
    super(props);
  }

  render() {
    const MainScreenNavigator = TabNavigator({
      ProfileStack: { screen: ProfileStack },
      Home: { screen: Home },
      HistoryStack: { screen: HistoryStack }
    }, {
      initialRouteName: 'Home',
      tabBarComponent: () => { return null; },
      swipeEnabled: true
    });

    return (
      <MainScreenNavigator/>
    );
  }
}

在某些时候,我需要禁用屏幕组件的滑动。怎么办?是否可以在不重新渲染导航器的情况下使用。

------ 15/03/2017编辑

尝试通过screenProps传递一个回调函数(仅适用于beta 7)..但正如预期的那样,它会回到initialRouteName&#39; Home&#39;当我从历史中做到这一点,因为它重新渲染。

与redux相同的问题......

任何建议都非常受欢迎!

1 个答案:

答案 0 :(得分:0)

您可以将其变为变量并创建一个功能来打开/关闭它。

this.state ={ swipe: true } //set state in constructor
....
toggleSwipe = () => { //function that will be passed down to toggle on/off 
  this.setState((prevState) => ({ swipe: !prevState.swipe });
}
....
swipeEnabled: this.state.swipe //this will now get toggled between true/false