在 TabBar 控制器内向 RNN 添加持久视图

Add a persistent view to RNN inside a TabBar controller

我想在标签栏内添加持久视图,如下所示的 Apple Music 应用程序。

目前,我可以将这个组件添加到每个屏幕的底部,但如果有一种方法可以将它附加到选项卡栏,这样应用程序中只有一个它的实例并且它没有'不必在按下新的选项卡屏幕时重新呈现。谢谢

您可以定义自己的 TabBarComponent

您可以像这样在 TabNavigator 中添加一个 属性 名称 tabBarComponent -

export const TabBar =  TabNavigator({
    Music: Music,
    Artists: Artists,
    Composers: Composers,
    Recents: Recents,
  },
  {
    navigationOptions: ({ navigation }) => ({
      tabBarIcon: ({ focused, tintColor }) => {
        const { routeName } = navigation.state;
        return <YourIconComponent color={tintColor} />
      },
    }),
    tabBarOptions: {
      activeTintColor: 'red',
      inactiveTintColor: 'grey',
    },
    tabBarComponent: TabBarComponent,
    tabBarPosition: 'bottom',
  }
);

然后你可以像这样定义你自己的TabBarComponent -

import React from 'react'
import { TabBarBottom } from 'react-navigation'
import { View, Text } from 'react-native'

class TabBarComponent extends React.PureComponent {
  render() {
    return (
      <View style={styles.yourTabBarContainerStyle}>
        <YourFixedComponent />
        <TabBarBottom {...this.props} />
      </View>
    )
  }
}

export default TabBarComponent;

...

希望对您有所帮助。

对于 RNN v2,我使用@guy.gc 的建议解决了这个问题,即添加一个加载到第一个屏幕的 componentDidMount 上的持久覆盖。