【发布时间】:2020-09-01 10:24:13
【问题描述】:
我正在制作一个简单的手风琴,每个手风琴内部都有一个文本编辑器。
Accordion.js
<div className="wrapper">
{accordionData.map((item, index) => (
<Accordion>
<Heading>
<div
style={{ padding: "10px", cursor: "pointer" }}
className="heading"
onClick={() => toggleHandler(index)}
>
{toggleValue !== index ? `Expand` : `Shrink`}
</div>
</Heading>
<Text> {toggleValue === index && item.content && <EditorContainer />} </Text>
</Accordion>
))}
</div>
这里的手风琴是作为一个组件组成的。这行{toggleValue === index && item.content && <EditorContainer />} 用于检查点击的手风琴,然后相应地加载内容和文本编辑器。
完整的工作示例:
步骤重现问题:
->打开上面的链接
-> 会有三个手风琴
-> 点击任何一个手风琴,这会将文本从 Expand 更改为 Shrink
-> 现在在编辑器中填充一些随机文本,然后点击文本Shrink
-> 点击展开
再次打开同一个手风琴-> 现在已经输入的值丢失了
我怀疑它是否会发生,因为每次我们展开/收缩时,都会调用 text_editor.js 组件并且它的状态值类似于,
this.state = {
editorState: EditorState.createEmpty()
};
这里不是EditorState.createEmpty(),我还需要提供其他东西吗?
要求:
如何在文本编辑器中存储已经输入的值。即使用户点击展开/缩小,输入的文本也需要保留在编辑器中。
非常感谢任何帮助。
【问题讨论】:
-
你写的代码不错。看起来像当您扩展/收缩组件重新呈现的代码时。你需要保持文字写在状态。
-
@SachinVishwakarma,您能否提供一个可行的示例作为解决方案?谢谢..
标签: javascript html reactjs editor accordion