使用参数导航到堆栈导航器中的第一个组件不起作用

时间:2018-08-14 23:08:28

标签: react-native react-navigation

我总是想将参数传递给StackNavigator中的一个组件。如果我的组件是StackNavigator中加载的第一个组件,这似乎不起作用。这是一些说明问题的代码。

  • 我从组件A开始。
  • 我按下按钮以导航至组件B。
  • 在日志中,您可以看到组件B已加载两次。第一次加载时不带参数。

    为x86构建的Android SDK:呈现方式:未定义

    为x86构建的Android SDK:使用以下方式呈现:►{数据:“来自A”}

  • 此外,如果您单击设备后退按钮,则会返回带有未定义参数的屏幕。

所以有两个问题:

  1. 我只导航了一次,但是我必须回去两次才能回到原来的位置。
  2. 即使使用参数导航,我的组件也不会加载任何参数。

以下是在博览会小吃中运行的代码:https://snack.expo.io/@bdzim/navigate-to-tab-from-parent

class A extends React.Component {
  render() {
    return (
      <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
        <Button
          title="This is A. Press to go to B"
          onPress={() => this.props.navigation.navigate(
            'B',  { data: 'from A' }
            )}
        />
      </View>
    );
  }
}

class B extends React.Component {
  render() {
    console.log('rendering with: ', this.props.navigation.state.params)
    let params = JSON.stringify(this.props.navigation.state.params)
    return (
      <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
        <Text>
          params: {params}
        </Text>
        <Button
          title="This is.. B! Press to go to A"
          onPress={() => this.props.navigation.navigate('A')}
        />
      </View>
    );
  }
}

const Stacks = StackNavigator({ B })
const Tabs = TabNavigator({ A, Stacks });

0 个答案:

没有答案