使用 react-native-router-flux 将数据从屏幕发送到 Tab 屏幕

send data from screen to Tab screen using react-native-router-flux

我正在尝试使用 react-native-router-flux 将数据从一个屏幕发送到另一个屏幕,但问题是我无法在屏幕的接收端接收数据。这是我的代码片段:

在router.js

<Router>
    <Stack key="root">
      <Scene
        key="signup"
        component={Signup}
        title=""
        initial={true}
        hideNavBar={true}
      />
      <Scene key="login" component={Login} title="" />

      <Scene key="bottomtourbar" tabs={true} hideNavBar={true}>
        <Scene
          key="toursHome"
          component={Tours}
          title="Tours"
          hideTabBar={true}
          hideNavBar={false}
        />
        <Scene
          key="analytics"
          component={Analytics}
          title="Analytics"
          hideNavBar={true}
          hideNavBar={false}
        />
       </Scene>
      </Stack>
  </Router>

在 Login.js 中,我使用以下代码将参数传递给 toursHome 页面

Actions.toursHome({dataResponse:jsonResponse});

在 ToursHome.js 文件中,我试图访问登录页面发送的参数

export default class Tours extends Component {
  constructor(props) {
    super(props);
  };
  render() {
    const responseData = this.props.dataResponse;
    console.log(responseData);
    return (
      <View style={styles.container}>
        <ToursTab />
        <View style={styles.TabbedContainer}>
          <Text>{responseData}</Text>
        </View>

        <ToursBottom />
      </View>
    );
  }
}

在控制台中它打印为未定义。

使用 "Actions.login({dataResponse:jsonResponse});" 从注册屏幕发送道具到登录有效,但是从登录屏幕发送道具到标签栏屏幕失败。 谁能帮我解决这个问题。

我尝试过以多种不同的方式实现这一目标。但我了解到 "the hard way" 将道具通过 Actions 传递到不同级别的场景(深度,如您的情况 toursHome 场景嵌套在 bottomtourbar 场景下)只能通过以下方式正确完成减少。如果您的场景连接到 redux(使用 connect()),那么更新商店中的状态,它应该可以通过 mapStateToProps 用于您连接的组件。

否则,使用 Actions 在场景之间传递道具对于同一 level/depth 上的场景是可行的(例如,在您的情况下,它将成功地在 Actions 之间传递道具analyticstoursHomesignuplogin)