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

IT技术 javascript reactjs dom
2021-05-24 13:34:22

我有一个外部库,可以呈现一些自定义 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个回答

这是一个简单的例子。

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

渲染一个普通的 JSX divref在里面使用

ref回调里面使用.appendChild(node)

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