是否可以让React忽略子树?即,不比较或更新它?
我的用例是迁移到React。一次重写我们所有的Handlebars模板是不可行的,但是如果我们可以将我们现有的模板用于某些子组件,我们可以慢慢采用它。
答案 0 :(得分:17)
是的,如果您不修改React中的子树,那么根本不会触及DOM。在React中很容易像Handlebars模板一样包装非React功能。您可以使用dangerouslySetInnerHTML
:
render: function()
return <div dangerouslySetInnerHTML={{__html: template(values)}}>;
}
或者您只需返回一个空div并在componentDidMount中填充(或附加事件处理程序等):
render: function()
return <div />;
},
componentDidMount: function() {
var node = React.findDOMNode(this);
node.innerHTML = template(values);
}
在后一种情况下,React在初始渲染后不会触及DOM,因为render
总是返回相同的东西。
答案 1 :(得分:0)
看看这个模块。简单而有效。 https://gist.github.com/alexeisavca/d4ff175fd16c93c8785d
这是一个coffeescript版本。
module.exports = ReactIgnore = React.createClass
shouldComponentUpdate: ->
false
render: ->
React.Children.only @props.children
将您的组件包装在其中:
<ReactIgnore>
YourComponent
</ReactIgnore>