与在元素上设置元素的innerHTML与在元素上设置危险地设置InnerHTML属性有什么“幕后”区别?假设为简单起见,我正在对事物进行适当的消毒。
例:
var test = React.createClass({
render: function(){
return (
<div contentEditable='true' dangerouslySetInnerHTML={{ __html: "Hello" }}></div>
);
}
});
与
var test = React.createClass({
componentDidUpdate: function(prevProp, prevState){
this.refs.test.innerHTML = "Hello";
},
render: function(){
return (
<div contentEditable='true' ref='test'></div>
);
}
});
我做的事情比上面的示例复杂一些,但总体思路是相同的
是,有一点不同!
使用innerHTML
vs 的直接效果dangerouslySetInnerHTML
是相同的-DOM节点将使用注入的HTML更新。
但是 ,在使用dangerouslySetInnerHTML
它时,让React 在幕后知道该组件内部的HTML并不是它关心的。
由于React使用虚拟DOM,因此当将差异与实际DOM进行比较时,它可以直接绕过检查该节点的子节点, 因为它知道HTML来自其他来源
。这样就可以提高性能。
更重要的是 ,如果仅使用innerHTML
,React无法知道DOM节点已被修改。下次render
调用该函数时, React将
使用它认为该DOM节点的正确状态应 覆盖的内容覆盖 手动注入 的内容 。
componentDidUpdate
我认为可以始终确保内容同步的解决方案,我相信它可以工作,但是在每次渲染过程中可能会有闪光。
问题内容: 假设我有一个类,其中包含许多子类。 我可以实例化该类。然后,我可以将其属性设置为子类之一。我已经在活动对象上有效地将类类型更改为其子类的类型。我可以在其上调用调用这些方法的子类版本的方法。 那么,这样做有多危险?看起来很奇怪,但是这样做是 错误 的吗?尽管可以在运行时更改类型,但这是否应该完全避免该语言的功能?为什么或者为什么不? (根据回复,我将针对我想做什么以及是否有更好的选择发布
问题内容: 在提交表单时,我正在尝试取代默认的发布行为。 显然,在React中,onSubmit是表单支持的事件。但是,当我尝试以下代码时: 该方法已运行,但是此后仍执行默认的发布行为。 您可以在我的jsfiddle中进行测试。 我的问题:如何防止默认的发布行为? 问题答案: 在您的函数中,传递事件并使用。
本文向大家介绍在Bootstrap中的元素上设置橙色边框以指示危险,包括了在Bootstrap中的元素上设置橙色边框以指示危险的使用技巧和注意事项,需要的朋友参考一下 要将橙色边框设置为元素,请使用border-warning类- 设置元素的样式- 让我们看一个在Bootstrap中实现border-warning类的示例- 示例
问题内容: 我正在用React制作电视指南。我正在从此API中获取表演信息:http : //api.tvmaze.com/episodes/333 如您所见,包含html。如果我渲染该字段。那么HTML将被解释为字符串,这意味着您可以在页面上看到标签等。 我知道我可以使用,但出于安全原因不建议使用。最佳做法是什么?从API获取格式化的文本并需要呈现它必须非常普遍。我很惊讶,没有一个过滤器,这将允
问题内容: 我正在尝试在Django 1.2中使用local_setting ,但对我来说不起作用。目前,我只是将local_settings.py添加到我的项目中。 settings.py local_settings.py 问题在于local_settings.py不会覆盖settings.py。怎么了? 问题答案: 你不仅可以添加local_settings.py,还必须显式导入它。 在最后
本文向大家介绍向元素添加红色背景色以使用Bootstrap设置危险动作,包括了向元素添加红色背景色以使用Bootstrap设置危险动作的使用技巧和注意事项,需要的朋友参考一下 使用.btn-danger类可以为按钮设置危险动作,即元素的红色背景色。 您可以尝试运行以下代码来实施危险动作- 示例