this.props.navigation.setParams()不会从导航中更新先前传递的参数

时间:2019-08-20 15:15:45

标签: react-native components react-navigation react-component react-native-tabnavigator

我在我的本机项目中使用TabNavigator,并通过this.props.navigation.setParams()this.props.navigation.getParam()在屏幕之间传递一些数据。问题是这种方法仅对我有效,仅当我第一次发送该数据时,第二次尝试发送数据时,离开屏幕时,数据在navigation.state.params

以下是负责接收和发送数据的代码片段

import {NavigationEvents} from 'react-navigation';

...

receiveData = () => {
    if (this.props.navigation.state.params.data !== null) {
        const data = this.props.navigation.getParam('data');
        this.setState({data});
    }
}

sendData = () => {
    const {data} = this.state;
    this.props.navigation.setParams({data});
}

render(){

...

<NavigationEvents
    onWillFocus = {this.receiveData}
    on WillBlur = {this.sendData}
/>

...

}

2 个答案:

答案 0 :(得分:0)

检查选项卡导航器是否正确模糊/聚焦了选项卡。

答案 1 :(得分:0)

将方法 sendData() 放在组件的 render() 函数中,这是允许您更新参数的唯一方法。