参数不会随着状态变化而更新,反应本机

时间:2020-07-02 18:09:45

标签: reactjs react-native

我有一个带有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);
  })


我期望获得更新的值,但我只是获得初始值

2 个答案:

答案 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);
  })