我有一個IMG DOM元素,我用data-uri生成。我如何將它附加到React.js「虛擬DOM」?如何將現有的<IMG>元素(HTMLImageElement)附加到Facebook React.js組件?
當我嘗試以下方法:
myImgComponent = React.createClass({
getInitialState: function() {
slowGenerateImage((function(_this) {
return function(img) { /* img is an HTMLImageElement */
return _this.setState({
image: img
});
};
})(this));
return {image: null};
},
render: function() {
return div(
{},
this.state.image /* image is a raw HTMLImageElement */
);
}
});
我得到以下錯誤:
Invariant Violation: traverseAllChildren(...): Encountered an invalid child; DOM elements are not valid children of React components.
謝謝!我希望有一個更加通用的逃生方法來添加由外部庫生成的DOM節點。雖然我是React的新手,但我相信只要生成的DOM節點是無狀態的,您的解決方案就是安全的。 我打開了React源,我同意,可能無法刪除多餘的div。我們可以改變生成的標籤類型,但React似乎認爲它是從標記字符串生成新的DOM節點。代碼的關鍵位似乎是「mountComponent:初始化組件,呈現標記並註冊事件偵聽器」。 –
注意:getDOMNode()在React 0.13及更高版本中已棄用。我們現在必須使用'react-dom'' findDOMNode()' – sookie
@sookie謝謝,補充說明。我的一些答案比吸血鬼年齡... – FakeRainBrigand