如何创建在 React Native 中滚动时消失的底部选项卡栏?

Amm*_*riq 5 react-native

我正在使用 React Navigation 在我的应用程序中创建选项卡导航器,我想要做的是当用户向下滚动时隐藏该选项卡栏,并在用户再次滚动到顶部时将其重新带回来,是否有任何跨平台解决方案?

参考应用程序是Linkedin

小智 6

我已经实现了显示/隐藏底部选项卡栏的组件。根据滚动方向参数showTabBar设置。

 export default class ScrollTab extends React.Component {
  onScroll = (event) => {
    const { navigation } = this.props;
    const currentOffset = event.nativeEvent.contentOffset.y;
    const dif = currentOffset - (this.offset || 0);  

    if (dif < 0) {
      navigation.setParams({ showTabBar: true });
    } else {
      navigation.setParams({ showTabBar: false });
    }
    //console.log('dif=',dif);

    this.offset = currentOffset;
  }      

  render () {
    return (
      <ScrollView onScroll={(e) => this.onScroll(e)}>
        {this.props.children}
      </ScrollView>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

然后navigationOptions可以tabBarVisible根据showTabBar参数更改属性。

const isTabBarVisible = (navState) => {
  if (!navState) {
    return true;
  }
  let tabBarVisible = navState.routes[navState.index].params ? navState.routes[navState.index].params.showTabBar : true;
  return tabBarVisible;
}

const MessagesStack = createStackNavigator(
  {
    Messages: MessagesScreen,
  },
  config
);

MessagesStack.navigationOptions = ({ navigation }) => {
  return {
    tabBarLabel: 'Messages',
    tabBarVisible: isTabBarVisible(navigation.state)
  }
};
Run Code Online (Sandbox Code Playgroud)