我在我的反应原生应用中使用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
});
}
}
问题在于,如果我按下第一个按钮(发送参数的那个按钮),然后导航回同一个视图并按下第二个按钮,我仍然会收到相同的参数,即使第二个按钮不发送任何内容!
答案 0 :(得分:0)
不是我的电脑所以我无法测试。 但是如果你先用第二个按钮导航怎么办?你还得到传递给页面的参数吗? 另外你也没有提到你导航到什么类型的导航。堆叠,抽屉或标签。添加更多信息,我会尽快回复你。 但我的印象是,您第二次导航到同一页面并且该页面已经安装。因此没有被重新渲染。您是否尝试过使用componentDidUpdate在第二个按钮上传递无变量?
这是我在讨论中提出的改变:
if (params && params.hasOwnProperty('profile')) {
this.setState({
profile: params.profile
});
else if (params && params.hasOwnProperty('profile')){
this.setState({
profile: null
});
}