【发布时间】:2018-03-03 09:55:45
【问题描述】:
我正在使用 React 创建一个类似于表单的界面,您知道,其中包含各种 <input/> 元素等。其中一项功能是文本字段将根据其他数据(来自服务器或其他输入)自行排列和重新排列...
React 可以处理所有的移动,除了一种情况:在父元素之间移动元素。
我的render()JSX 可能会根据状态在以下之间切换:
return (
<div className="parent">
<h4>Before container</h4>
<input type="text" key="one"/>
<div className="container"/>
</div>
)
还有:
return (
<div className="parent">
<h4>After container</h4>
<div className="container"/>
<input type="text" key="one"/>
</div>
)
一切正常——输入被移动并保持其所有浏览器原生状态(焦点/当前输入的文本/选择/等)。
但是当它切换到:
return (
<div className="parent">
<h4>Inside container</h4>
<div className="container">
<input type="text" key="one"/>
</div>
</div>
)
它从头开始重新创建 <input/> DOM 元素,并且它的所有浏览器原生状态都丢失了,尽管 key= 保持不变!
这里是 a codepen 演示出了什么问题。您的打字在“之前”和“之后”之间保持不变,但在“内部”中消失。
这是 React 的基本限制,还是有一种适当的方法可以在父母之间移动时保持原生元素的完整性?
【问题讨论】:
标签: javascript reactjs html-input