React-Navigation:如何在TabNavigation中的选项卡之间传递数据?

时间:2019-08-13 08:59:24

标签: javascript react-native react-navigation react-native-ios

我在tabNavigation中有两个标签

const HomeStack = createStackNavigator({
    Home: HomeView
});

const SettingStack = createStackNavigator({
    Setting: SettingView
});

const TabNavigator = createBottomTabNavigator({
    Home: HomeStack,
    Setting: SettingStack
});

所以我想将标签从HomeView切换到SettingView

//在主视图中

this.props.navigation.navigate('Setting', {
    someFlag: true,
    data: "SET"
});

通过按钮操作并希望发送一些数据,如下所示。

//在设置视图中

const { navigation } = this.props;
const openPCPSchedule = navigation.getParam("someFlag", false);
const data = navigation.getParam("data", null);
console.log("NAVI PARAMS: ", openPCPSchedule); // false
console.log("NAVI data: ", data); // null

false处获取nullSettingView,需要一种正确的方法来将数据从一个标签获取到另一个标签吗?

3 个答案:

答案 0 :(得分:2)

您需要在SettingView中使用dangerouslyGetParent()this.props.navigation.navigate将参数发送给父对象,而不是屏幕。 SettingView中的代码将为:

const { navigation } = this.props;
const openPCPSchedule = navigation.dangerouslyGetParent().getParam("someFlag", false);
const data = navigation.dangerouslyGetParent().getParam("data", null);

答案 1 :(得分:1)

我们使用this.props.navigation从上一个标签中获得道具。

传递数据时添加

this.props.navigation.navigate('Setting', {
    someFlag: true,
    data: "SET"
});

要在“设置”屏幕上访问以上数据,请在componentDidMount方法或渲染方法中添加以下代码

this.props.navigation.state.params.someFlag //您可以在此处以true的方式访问someFlag

答案 2 :(得分:1)

您可以使用this.formatedOutputValue = this.cp.transform(parseInt(this.outputValue),1.2-2);

screenProps的使用Link Page

  • screenProps-将其他选项传递到子屏幕

//主视图

ScreenProps

//在设置视图中

class YourApp extends Component {
  render() {
    const screenProps = {
         someFlag: true,
         data: "SET"
    }

    return (
      <TabNavigator screenProps={screenProps} />
    )
  }
}

export default YourApp

AppRegistry.registerComponent('YourApp', () => YourApp);