当下一个屏幕上的值发生变化时,在上一个屏幕上获取触发器

Fetch triggers on previous screen when value on next screen changes

我的 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();
    }

是否从 componentDidMount 生命周期挂钩调用提取? 如果是这样,则在此处添加一个条件,如果该名称已存在于您正在使用的状态下,则不进行调用。

不需要触发Fetch API来获取更新后的值。 从您提出的问题来看,屏幕 A(主菜单)是您的父屏幕,屏幕 B(编辑配置文件)是子屏幕。 您必须将 2 个道具从父级传递给子级,一个是变量 'name',两个是回调函数来更改该名称。

这是一个简单的例子

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 函数。