【问题标题】:react-native re - ender component by clicking a button from another componentreact-native 通过单击另一个组件的按钮来渲染组件
【发布时间】:2019-03-06 15:43:47
【问题描述】:

我的“第一页”上有一份干预清单。当我单击一个时,我导航到它的详细信息“第二页”,并且有一个按钮可以让我开始事件。当我单击该按钮时,它会从路由中填充一个对象:api/current

{
    "interventionSummary": {some object}
}

当没有干预开始时:

{
  "interventionSummary": null
}

当干预开始时,它也应该结束,所以如果用户不想在干预列表(“第 1 页”)中显示提醒消息,请使用:如果干预摘要!== null -> 显示提醒结束干预的消息。

问题是当我返回我的干预列表时,我的对象干预摘要没有更新,除非我重新加载。对于我能够使用的另一个页面:

this.props.navigation.addListener('focus', doStuff); 

但是按钮和使用的路由在同一个页面中。我已经尝试过,forceUpdate,模拟状态变化:this.setState({state : this.state}) 来自谷歌的解决方案,但没有任何效果,我不知道如何让组件干预列表看到更新,或者只是点击“第二页”后重新渲染...

我希望这很清楚,如果有人知道这样做的方法

【问题讨论】:

    标签: react-native


    【解决方案1】:

    在你的第一页创建你的函数。

    myMethod() {
        //function i want to call in second page
       }
    

    在您的第一页导航到第二页时(在我的情况下,当用户按下按钮时)传递一个函数作为参数,如下所示:

    onPress={() => this.props.navigation.navigate('SecondPage', {
            rerenderOutputTitles: () => this.myMethod(),
          })}
    

    然后在第二页中调用此方法,如下所示:

    this.props.navigation.state.params.rerenderOutputTitles();
    

    【讨论】:

    • 您好,感谢您的回答!我需要的是更多的方式,按钮动作在第二页,并且必须在第一页更新
    • 您的意思是当用户在第二页按下按钮时,必须在第一页更新组件?
    • 是的..不知道有没有可能
    • 我写的答案是为我做的,我在我的应用程序中使用数据库,所以当用户在第二页按下该按钮时,我告诉它在第一页再次读取数据库(使用这个函数),我在那个函数中调用setState,所以当我回到第一页时,我看到它更新了。
    猜你喜欢
    • 2021-09-16
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 2020-11-24
    • 2022-08-13
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    相关资源
    最近更新 更多