通过单击另一个组件中的按钮,react-native重新呈现组件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过单击另一个组件中的按钮,react-native重新呈现组件相关的知识,希望对你有一定的参考价值。

我在“第一页”上有一份干预清单。当我点击其中一个时,我会导航到它的详细信息,“第二页”,然后是一个允许我启动事件的按钮。当我点击该按钮时,它会从路径填充一个对象:api / current

{
    "interventionSummary": {some object}
}

当没有干预开始时:

{
  "interventionSummary": null
}

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

问题是当我回到我的介入列表时,我的对象interventionSummary没有更新,除非我重新加载。对于我能够使用的另一个页面:

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

但是使用的按钮和路径在同一页面中。我试过,forceUpdate,模拟一个状态更改:this.setState({state:this.state})来自谷歌的解决方案,但没有什么工作,我不知道如何使组件介入列表看到更新,或只是单击“第二页”后重新渲染...

如果有人知道如何做到这一点,我希望这很清楚

答案

在您的第一页中创建您的功能。

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

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

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

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

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

以上是关于通过单击另一个组件中的按钮,react-native重新呈现组件的主要内容,如果未能解决你的问题,请参考以下文章

如何通过使用angularJS单击另一个组件的按钮来更改一个组件的视图?

如何通过单击按钮更改另一个对象的动画?

在 React 中单击来自不同组件的按钮时触发另一个组件中的函数

测试按钮单击 ReactJS 上是不是呈现另一个组件

通过父组件的onClick更新组件状态

使用按钮单击更改两个组件的颜色