当下一个屏幕上的值发生变化时,在上一个屏幕上获取触发器
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 函数。
我的 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 函数。