1

我像这样设置了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).. 但正如预期的那样,当我从 History 执行此操作时,它会返回到 initialRouteName 'Home',因为它是重新渲染的。

redux 也有同样的问题...

任何建议都非常受欢迎!

4

1 回答 1

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
于 2017-03-09T16:20:43.453 回答