javascript-使用React更新contenteditable容器中的内容
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-使用React更新contenteditable容器中的内容,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1206字,纯文字阅读大概需要2分钟。
内容图文
![javascript-使用React更新contenteditable容器中的内容](/upload/InfoBanner/zyjiaocheng/660/d776249d9c684e25b074447be8938dba.jpg)
我想打破用户输入到内容可编辑容器中的文本,并用包裹在< span>中的相同文本替换容器的内容.元素.
这是我的渲染方法:
render: function() {
var children = [],
index = 0;
this.state.tokens.forEach(function(token) {
children.push(<span key={index++}>{token}</span>, <span key={index++}> </span>);
});
return <div
ref="input"
className="input"
contentEditable="true"
onKeyPress={this.keyPress}
>{children}</div>;
}
发生的情况是,在用户输入间隔(600毫秒)之后,状态发生变化并呈现组件时,添加了子项,但是React由于某种原因添加了容器中的原始文本,因此它会重复文本.
另一件事是,如果用户选择了文本并将其删除,那么在下一次更新中,React将引发各种错误,例如:
Uncaught TypeError: Cannot read property ‘parentNode’ of undefined
和
Uncaught Error: Invariant Violation: findComponentRoot(…, .0.$2):
Unable to find element. This probably means the DOM was unexpectedly
mutated (e.g., by the browser), usually due to forgetting a
when using tables or nestingor tag……
为什么会这样?
谢谢
解决方法:
不幸的是,现在contenteditable不适用于React生成的子代:
https://github.com/facebook/react/issues/1466
当前的一种解决方法是自己构建HTML或使用React.renderToStaticMarkup并使用React的危险地设置内部HTML,尽管这样做会失去一些React的好处.
内容总结
以上是互联网集市为您收集整理的javascript-使用React更新contenteditable容器中的内容全部内容,希望文章能够帮你解决javascript-使用React更新contenteditable容器中的内容所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。