我有一个带有2个屏幕的react native应用程序,第一个应该从服务器接收更新并更新其状态,单击提交按钮后,该应用程序导航到另一个屏幕,该屏幕取决于第一个屏幕的状态,我设法通过参数传递了值并在第二个屏幕中检索了它们,但是由于它们被定期替换,所以我似乎无法从第一个屏幕中获取更新的值,我应该如何处理呢?将对象移至第二个屏幕,如果可以的话,我将如何处理..
第一个屏幕,请注意该屏幕上的状态正在更新,并且很好,我在每个setState之后控制台对其进行了记录,第二个屏幕未接收到更新
handleSubmit = () => {
this.props.navigation.navigate("Tracking Bus", this.state.bus);
};
render() {
return (
<TouchableNativeFeedback onPress={this.handleSubmit}>
<View
style={{
width: 330,
height: 40,
backgroundColor: "#6FCF97",
alignSelf: "center",
justifyContent: "center",
}}
>
<Text style={{ alignSelf: "center", fontSize: 20 }}>Submit</Text>
</View>
</TouchableNativeFeedback>
</View>
</View>
);
}
第二屏渲染功能,即
render() {
return (
setInterval(() => {
console.log(this.props.route.params.bus.location[1]);
}, 2000);
})
我期望获得更新的值,但我只是获得初始值
答案 0 :(得分:0)
您从第一个屏幕错误地传递了参数。您可以尝试这样做,并且您的提取逻辑看起来像this.props.route.params.bus
handleSubmit = () => {
this.props.navigation.navigate("Tracking Bus", { params: {bus : this.state.bus} });
};
答案 1 :(得分:0)
也许这可以工作:
handleSubmit = () => {
this.props.navigation.navigate("Tracking Bus", {bus:this.state.bus});
};
并在第二个屏幕中:
render() {
return (
setInterval(() => {
const bus= this.props.navigation.getParam('bus');
console.log(bus);
}, 2000);
})