下一个屏幕上的值更改时,上一个屏幕上的获取触发器

时间:2018-08-10 05:14:09

标签: reactjs native

我的react native项目的屏幕A是主菜单,屏幕B是编辑配置文件屏幕。如果导航到B并在那里更改文本(其中包含我的全名),它应该更新并在屏幕A上显示我的全名。当前,我有一个访存函数,该函数显示从API提取的先前名称。屏幕B更新了API,但是导航回屏幕A并没有显示新的更新的全名。

我当时正在考虑使用goBack将新存储的值传递到上一个屏幕,但这不起作用。我想存储该值,然后在屏幕A中与其他API调用同时调用它。

那是行不通的。如果有人通过触发获取API不断更新主屏幕的任何代码或建议(除非有更好的方法可以做到),请告诉我。

.then((response) => response.json())  
    .then ((res) => {

    console.log(res); 

        if(res.errornum == 200) {
            //AsyncStorage.setItem('email', res.email);
            this.props.navigation.goBack( {savedUser: this.state.savedUsername});   
            this.props.navigation.goBack();
            alert("User details have been updated!")        
        }
        else if (res.errornum != 200){
            //alert(res.message);
            alert("Couldn't save details. Try again.")
            } 
        })
        .done();
    }

2 个答案:

答案 0 :(得分:0)

是否从componentDidMount生命周期挂钩中调用获取? 如果是这样,则在该名称中添加一个条件,如果该名称在您使用的状态下已经存在,则无法拨打电话。

答案 1 :(得分:0)

无需触发Fetch API即可获取更新后的值。 根据您提出的问题,屏幕A(主菜单)是您的父屏幕,屏幕B(编辑配置文件)是子屏幕。 您必须从父级到子级传递2个道具,一个是变量“名称”,两个是回调函数以更改该名称。

这是一个简单的例子

Class Mainmenu extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            name = 'John'
        };
    }


    changeName = (value) => {
        this.setState({
            name: value
        });
    }

    render() {
        return (
          <EditProfile 
          name={this.state.name}
          changeName={this.changeName}
          />);
    }
}

在“编辑配置文件”中,使用changeName函数。