在 TSX 文件中:“typeof React”类型上不存在属性“createRef”

Posted

技术标签:

【中文标题】在 TSX 文件中:“typeof React”类型上不存在属性“createRef”【英文标题】:In TSX file : Property 'createRef' does not exist on type 'typeof React' 【发布时间】:2018-10-25 03:29:02 【问题描述】:

我需要组件的引用。刚从 jsx 转移到 tsx,找不到解决这个问题的方法。

其他解决方法是使用查询选择器,但我相信这不是一种很好的反应方式。

这里是构造函数

constructor(props) 
    super(props);
    this.state = 
        data: initialData,
        showNewListForm: false,
        whichButtonClicked: undefined,
        background: props.background || "#23719f"
    ;

    this.divContainerRef = React.createRef();
    console.log("kanban reference : " + React.createRef().current);

    this.handleDragStart = this.handleDragStart.bind(this);
    this.handleDragEnd = this.handleDragEnd.bind(this);
    this.handleLaneDragEnd = this.handleLaneDragEnd.bind(this);
    this.handleLaneDragStart = this.handleLaneDragStart.bind(this);
    this.onCardAdd = this.onCardAdd.bind(this);
    this.onCardClick = this.onCardClick.bind(this);
    this.addNewListHandler = this.addNewListHandler.bind(this);
    this.containerRefResolver = this.containerRefResolver.bind(this);
    this.isBoardPresent = this.isBoardPresent.bind(this);

【问题讨论】:

您是否正确导入了React import * as React from 'react'; 【参考方案1】:

您的@types/react 版本似乎已过期。最新版本 16.3.14 具有 createRef 的类型定义。

【讨论】:

宾果游戏!!!你的解决方案奏效了!非常感谢。我正在干预代码,并找到了另一种解决方案,一种解决方法,(React as any).createRef() 也可以。【参考方案2】:

在我的 Typescript 代码库中,我必须更新 react-dom 类型:

yarn upgrade @types/react-dom^16.3.0

【讨论】:

16.3.0 的 npm 或 yarn 上没有 react-dom 类型的标记版本。 你是对的。我假设 yarn 将其解析为下一个语义版本

以上是关于在 TSX 文件中:“typeof React”类型上不存在属性“createRef”的主要内容,如果未能解决你的问题,请参考以下文章

在 VS Code 中保存时格式化 *.tsx 文件

在 chrome devtools 中,在我所有的 tsx 源文件中,语法高亮和智能感知不再起作用

React TSX 文件中的泛型

在反应中创建桶文件(使用.tsx)

如何在我的 auth.tsx 文件上使用 typescript 文件

在 Visual Studio Code 中隐藏 ts 和 tsx 生成的 JS 文件