我的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();
}
答案 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函数。