如何在react-Native中使用标签导航传递数据? (反应导航)?

时间:2018-06-22 11:02:09

标签: react-native react-navigation tabnavigator

这是我的Main.js文件,其中包含我的“标签”组件

Main.js

    <View>
     </Tab>
    </View>

这是我的Tab.js文件:

const mainTab = TabNavigator(
{
TabItem1: {
  screen: gameTab,
  navigationOptions: ({ navigation }) => ({
    tabBarLabel: "Tab1",
  })
},

TabItem2: {
  screen: Abc,
  navigationOptions: ({ navigation }) => ({
    tabBarLabel: "Tab2",
  })
},

TabItem3: {
  screen: Abc,
  navigationOptions: ({ navigation }) => ({
    tabBarLabel: "Tab3",
  })
}
},
 {
initialRouteName: "TabItem1",
tabBarComponent: TabBarBottom,
tabBarPosition: "bottom",
animationEnabled: true,
tabBarOptions: Platform.OS === "ios" ? iosTabBarOption : 
androidTabBarOption
 }
);

export default mainTab;

这是我的gameTab:

const gameTab = TabNavigator({
t1: { screen: mainlist, navigationOptions: { title : 'tab1', header:null}},
t2: { screen: Abc,      navigationOptions: { title : 'tab2', header:null}},
t3: { screen: Abc,      navigationOptions: { title : 'tab3', header:null}},
t4: { screen: Abc,      navigationOptions: { title : 'tab4', header:null}},
t5: { screen: Abc,      navigationOptions: { title : 'tab5', header:null}},
},{
tabBarComponent: TabBarTop,
tabBarPosition: 'top',
animationEnabled: true,
swipeEnabled: false,
lazy: false,
tabBarOptions: Platform.OS === 'ios' ? iosGameTabOption : 
androidGameTabOption,
});

export default gameTab;

最后,这是我的mainlist.js:

....

let arr = [[1,2,3], [2,3,4], [3,4,5]];

....

所以我的问题是: 我在mainlist.js中有一个数组,我想将其传递回我的Main.js。 我该怎么办?

我知道我可以使用ScreenProps将数据从Main.js发送到mainlist.js,但是我不知道如何将其发送回去。

提前谢谢!!!!

1 个答案:

答案 0 :(得分:0)

由于您的数据是静态的,或者不会随打开的选项卡而变化,因此您要做的就是从mainlist.js导出数组。

// mainlist.js
let arr = [[1,2,3], [2,3,4], [3,4,5]];

export default { arr };

并将该数组导入所需的每个选项卡中。

// Abc tabs components. Abc.js
import { arr } from "./mainlist.js";

并根据需要使用数据。您还可以使用redux并使用数据维护全局树。

如果您决定动态更改标签,可以将参数传递到每个屏幕。

有关更多信息:https://reactnavigation.org/docs/en/params.html