首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >'HTMLElement | null‘类型的参数不能赋值给'Element’类型的参数。类型'null‘不可赋值给类型’Element‘。to (2345)

'HTMLElement | null‘类型的参数不能赋值给'Element’类型的参数。类型'null‘不可赋值给类型’Element‘。to (2345)
EN

Stack Overflow用户
提问于 2020-08-21 18:00:42
回答 5查看 22.5K关注 0票数 16

我有index.html

并希望单独使用下面的组件portal divroot div

代码语言:javascript
复制
import React from 'react';

const portalDiv = document.getElementById('portal');

function Portal1(props) {
  return ReactDOM.createPortal(
    
      {props.children}
    , 
  portalDiv); //here
}

export default Portal1;

但我得到了这个错误,“HTMLElement | null”类型的参数不能分配给“Element”类型的参数。类型“null”不可分配给VScode中的类型“Element”.ts(2345)。

我正在使用打字脚本。请帮忙。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-08-21 18:04:13

因为getElementById可能返回null。因此,您只需在使用like之前进行检查即可:

代码语言:javascript
复制
function Portal1({ children }) {
  return portalDiv ? ReactDOM.createPortal(<>{children}, portalDiv) : null;
}
票数 8
EN

Stack Overflow用户

发布于 2020-08-21 18:09:08

其他人回答说你应该添加一个null-check,但是Typescript也有一个非null断言,你可以在当然可以属性,以确保该值永远不会为空!运算符添加到语句末尾:

代码语言:javascript
复制
const portalDiv = document.getElementById('#your-element')!;
票数 43
EN

Stack Overflow用户

发布于 2021-02-25 04:53:49

所以我不知道是否有人仍然有这个问题,但有一个更简单和直接的解决方案。只需使用以下命令声明模式元素"as“关键词

const modalRoot = document.getElementById("modal-root") as HTMLElement;

这将删除错误。我建议你看看这篇很棒的react-typescript小抄。

https://github.com/typescript-cheatsheets/react

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63520680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档