【发布时间】:2014-12-09 02:09:02
【问题描述】:
我正在尝试“重置”一个 ReactJS 元素。
在这种情况下,元素占页面内容的 90% 以上。
我正在使用replaceState 将元素的状态替换为其初始状态。
不幸的是,具有自己“状态”的子元素不会重置。特别是,表单字段保留其内容。
有没有办法强制重新渲染一个元素,这也会导致子元素重新渲染,就像页面刚刚加载一样?
【问题讨论】:
-
您可能应该将状态作为道具传递给孩子
-
如果您使用 React 文档中提到的 controlled components 范例并将状态存储在您调用
replaceState的层次结构的上层,您也可以“重置”表单的状态。 -
@ssorallen 输入嵌入在具有自己的功能和与服务器通信的元素中。例如一个“用户名”字段,它自己进行 AJAX 检查重复项,作为 field 验证的一部分。
-
我强烈建议您阅读 React 团队的 Flux architecture。让每个组件控制数据会让你感觉像是在与 React 对抗,就像这里的情况一样。将状态尽可能向上推送到组件层次结构中,并使用后代的回调来触发层次结构中的数据更改。
标签: javascript reactjs