当前位置: 首页 > 面试题库 >

如何重置包括所有传递可到达状态的反应组件?

王景山
2023-03-14
问题内容

我偶尔会有一些react组件,这些组件在概念上是有状态的,需要重设。理想的行为将等同于删除旧组件并读取新的原始组件。

React提供了一种方法setState,该方法允许设置组件自己的显式状态,但不包括隐式状态(例如浏览器焦点和表单状态),并且还排除其子级状态。捕获所有这些间接状态可能是一项艰巨的任务,我宁愿严格而彻底地解决它,而不是在每一个令人惊讶的新状态下打个mol子。

是否有API或模式可以做到这一点?

编辑:
我做了一个简单的例子证明了this.replaceState(this.getInitialState())方法并与对比它this.setState(this.getInitialState())的方法:的jsfiddle
- replaceState更强劲。


问题答案:

为了确保您提到的隐式浏览器状态和子级状态被重置,您可以向;返回的根级组件添加key属性render。当它更改时,该组件将被丢弃并从头开始创建。

render: function() {
    // ...
    return <div key={uniqueId}>
        {children}
    </div>;
}

没有重置单个组件的本地状态的捷径。



 类似资料:
  • 我是新的TypeScript。我想通过打字稿的接口来反应状态,然后呈现状态。但是我不知道如何传递接口值来反应状态。

  • 反应路由器:链接和路由不传递状态到组件 我正在用React、Redux和React路由器构建一个在线购物应用程序。在主页上,显示所有项目。我希望用户能够点击一个图像,并被带到一个页面,其中包含该项目的项目详细信息。 下面是我如何做到这一点的: 在App.js中,我使用BrowserRouter、Route和Switch进行路由 这看起来很简单,我在网上看到了很多关于这一点的讨论。以下是我已经尝试过

  • 如何设置父组件的状态从子组件内部的反应?子组件只是一个我想设置组件状态的函数。

  • 顺便说一下,在使用/而不是发射器时,我遇到了同样的问题。我已经决定给你们举这个例子,因为它很容易理解和再现。

  • 基本上是新的反应,我有点困惑如何正确地传递组件之间的状态。我发现一个类似的问题已经出现了——将表单元素状态传递给兄弟/父元素的正确方法是什么?但是我想知道你能否给我一个关于下面代码的具体答案。 目前应用的结构包括: 父组件- 2个孩子:和 目标是对我的Meteor收藏进行异步搜索,并仅显示与搜索词匹配的