reactjs - 如何重置 react 组件,包括所有可传递可达的状态?

标签 reactjs

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

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

是否有 API 或模式可以执行此操作?

编辑:我做了一个简单的示例,演示了 this.replaceState(this.getInitialState()) 方法,并将其与 this.setState(this .getInitialState()) 方法:jsfiddle - replaceState 更加健壮。

最佳答案

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

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

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

关于reactjs - 如何重置 react 组件,包括所有可传递可达的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21749798/

相关文章:

reactjs - 编辑时的react-hook-form不更新

reactjs - 如何修复 Reactjs 中的 ‘Cannot read property ' params' of undefined' 错误

javascript - 我如何重用不同颜色的 react 组件?

javascript - React - 列表中的每个 child 都应该有一个唯一的 "key" Prop

reactjs - fs.readdirSync 不是一个函数 - Electron + React.js

javascript - 使用 setState() 使用 API 中的数据更新 View - ReactJS

javascript - 通过带有对象子项的数组来 react native 映射 - 与 react 网络中的工作方式不同吗?

javascript - 在 Reactjs 中读取 excel 文件

reactjs - useTranslation 在 react 钩子(Hook)中不起作用?

javascript - 如何正确地 mock `antd` Upload Dragger?