导航到路线

时间:2018-02-07 21:03:37

标签: react-native react-navigation

我在我的反应原生应用中使用react-navigation

在两个不同的地方,我有一个导航到路线的按钮。一个按钮也发送参数,一个按钮不发送:

<Button onPress={() => { navigation.navigate('profile', { user: 'test' }) }} title="test" />

<Button onPress={() => { navigation.navigate('profile') }} title="test" />

在配置文件路由中,我有一个componentWillMount函数来根据收到的参数设置状态:

componentWillMount() {
  const { params } = this.props.navigation.state;

  if (params && params.hasOwnProperty('profile')) {
    this.setState({
      profile: params.profile
    });
  }
}

问题在于,如果我按下第一个按钮(发送参数的那个按钮),然后导航回同一个视图并按下第二个按钮,我仍然会收到相同的参数,即使第二个按钮不发送任何内容!

1 个答案:

答案 0 :(得分:0)

不是我的电脑所以我无法测试。 但是如果你先用第二个按钮导航怎么办?你还得到传递给页面的参数吗? 另外你也没有提到你导航到什么类型的导航。堆叠,抽屉或标签。添加更多信息,我会尽快回复你。 但我的印象是,您第二次导航到同一页面并且该页面已经安装。因此没有被重新渲染。您是否尝试过使用componentDidUpdate在第二个按钮上传递无变量?

这是我在讨论中提出的改变:

if (params && params.hasOwnProperty('profile')) {
  this.setState({
    profile: params.profile
  });
else if (params && params.hasOwnProperty('profile')){
  this.setState({
    profile: null
  });
}