小编典典

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

reactjs

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

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

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

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


阅读 256

收藏
2020-07-22

共1个答案

小编典典

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

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

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

2020-07-22