reactjs - 组件上缺少 TypeScript ReactDOM 属性 'type'

标签 reactjs compiler-errors typescript

出现以下错误:

Error   TS2345  Argument of type 'typeof SomeComponent' 
is not assignable to parameter of type 'ReactElement<{}>'.
Property 'type' is missing in type 'typeof SomeComponent'.

得到以下代码 typescript 代码:

import * as React from 'react';
import * as ReactDOM from 'react-dom';

interface IProps{}    
interface IState {}

class SomeComponent extends React.Component<IProps, IState> {
    render() {
        return <div />;
    }
}

var component = SomeComponent;
var root = document.getElementById("root");

ReactDOM.render(component , root);

我尝试了以下方法:

class SomeComponent extends React.Component<IProps, IState> {
    render() {
        return <div />;
    }

    get type() {
        return "test";
    }
}

最佳答案

应该是这样的:

interface IProps{}    
interface IState {}

class SomeComponent extends React.Component<IProps, IState> {
    render() {
        return <div />;
    }
}

ReactDOM.render(<SomeComponent /> , document.getElementById("root"));

您不将组件类传递给render 函数,您需要传递实例。


编辑

这个:

var component = SomeComponent;

将对类 SomeComponent 的引用分配给 component 变量,这意味着如果您这样做,那么您可以同时执行这两项操作,而且它们是相同的:

var componentInstance1 = <SomeComponent />
var componentInstance2 = <component />

如果您不想使用 jsx/tsx 表示法,那么在构建组件时您需要传递 props:

var component = new SomeComponent(props);

关于reactjs - 组件上缺少 TypeScript ReactDOM 属性 'type',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36780879/

相关文章:

javascript - 类型错误:Object(...) 不是函数 - Redux - React-Router

react-native - 从 React Native 中的 renderScene 函数(Navigator)获取状态

javascript - 如何使用 React.Js 在手机(或手电筒)中打开手电筒

ios - 在文本属性字典中实例化 UIFont 时出错

c - 嵌入式C代码无法解释的语法错误;预期……在 '{' token 之前

javascript - 将 int 转换为 Typescript 中的枚举字符串

typescript - TypeScript 的并集和交集类型的命名

reactjs - 为什么我的 React 组件总是显示相同的状态?

c++ - 是什么导致我的代码中出现 "error LNK2005: already defined in .obj"错误?

reactjs - 通过键在 typescript 中使用 react 组件动态访问对象