首页 > 解决方案 > 如何在 typescript 中使用没有额外 div 的 createPortal?

问题描述

我经常像下面的代码一样使用 createPortal:

        const containerEle = document.createElement('div');
        const App = function(){
            useEffect(()=>{
            document.body.appendChild(containerEle);
            return ()=>{
              document.body.removeChild(containerEle);
            }
          },[])
            return createPortal(<div className="my-component"/>, containerEle);
        }

这将呈现像

<div><div className="my-component"/></div>

但实际上我只是想

<div className="my-component"/>

我尝试将 createElement('div') 修改为片段

 const containerEle = document.createDocumentFragment();

它有效,但在打字稿中,它告诉我错误:

TS2345: Argument of type 'DocumentFragment' is not assignable to parameter of type 'Element'.

对于createDocumentFragment返回 DocumentFragment。
我应该如何修改我的代码以消除此错误?

标签: javascriptreactjstypescript

解决方案


推荐阅读