在React组件的render函数中返回DOM元素

时间:2017-05-10 20:08:19

标签: javascript reactjs dom

我有一个外部库,可以呈现一些自定义的js控件。该库返回一个可以插入页面的DOM元素。

我在React中为这个库创建包装器。除非我不确定如何允许渲染函数接受DOM元素作为其返回

render() {
 if (this.state.someType) {
   let customControl = new this.state.someType();
   var node = customControl.getNode(); 

   return node; //This is an HTMLDOMElement i.e. div or span
 }

 return <div>Loading Custom Control...</div>;
}

我能够调试代码,一切正常。节点是我所期望的,但页面上的html永远不会被替换。

2 个答案:

答案 0 :(得分:10)

这是一个简单的例子。

render() {
   const newNode = document.createElement('p'); 
   return <div ref={(nodeElement) => {nodeElement && nodeElement.appendChild(newNode)}}/>
}

答案 1 :(得分:9)

渲染普通的JSX div。在里面使用ref

ref回调中使用.appendChild(node)

请参阅https://reactjs.org/docs/refs-and-the-dom.html