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

2023-12-09

我偶尔会有一些概念上有状态的反应组件,我想重置它们。理想的行为相当于删除旧组件并读取新的原始组件。

React提供了一个方法setState它允许设置组件自己的显式状态,但排除隐式状态,例如浏览器焦点和表单状态,并且还排除其子级的状态。捕获所有间接状态可能是一项棘手的任务,我更愿意严格而彻底地解决它,而不是用每一个新的令人惊讶的状态玩打地鼠游戏。

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

Edit:我做了一个简单的例子来演示this.replaceState(this.getInitialState())方法并将其与this.setState(this.getInitialState())方法:jsfiddle - replaceState更加稳健。


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

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

没有重置单个组件的本地状态的快捷方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何重置反应组件,包括所有可传递可达的状态? 的相关文章

随机推荐