【发布时间】:2015-07-16 15:20:45
【问题描述】:
我正在使用 ReactJS 构建一个网站。我有一个 div,它的内容是根据单选按钮的状态决定的(它改变了媒体的值):
<div className="card_container">
{ this.state.media=="image" ? <MediaCard /> : <TextCard /> }
</div>
在 card_container 中呈现的两个元素都有一个文本字段,我希望它们的内容在状态之间切换时不会被丢弃。例如,如果在 MediaCard 内的文本区域中输入“foo”,切换到 TextCard,然后再切换回 MediaCard,则会丢失在文本区域中输入的文本。
如何维护原始的 MediaCard 元素并仅使用文本及其所有道具和状态重新渲染原始元素?
编辑:目前,我已经通过冒泡包含元素的属性来解决这个问题,然后在我重新渲染这些元素时将它们作为道具传递。不过,这是一个丑陋的解决方案,我宁愿找到一个更好的解决方案......
【问题讨论】:
-
只是一个想法:也许尝试在 componentWillUnmount() 中克隆对象,以捕获其属性?
-
我没有尝试过,但即使我尝试添加对该元素的引用(例如 - 如果在 MediaCard 的父级上我添加:this.state.MC =
然后渲染 this.state.MC,它仍然会创建一个全新的元素 -
我会将状态冒泡给父级。但是,如果这对您来说看起来“丑陋”,为什么不直接使用 CSS 来隐藏/显示处于活动状态的
Card?这样它就不会被破坏。
标签: javascript html reactjs