组件上缺少 TypeScript ReactDOM 属性“类型”

Mic*_*han 4 compiler-errors typescript reactjs

得到以下错误:

Error   TS2345  Argument of type 'typeof SomeComponent' 
is not assignable to parameter of type 'ReactElement<{}>'.
Property 'type' is missing in type 'typeof SomeComponent'.
Run Code Online (Sandbox Code Playgroud)

得到以下代码打字稿代码:

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);
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

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

    get type() {
        return "test";
    }
}
Run Code Online (Sandbox Code Playgroud)

Nit*_*mer 5

应该是这样的:

interface IProps{}    
interface IState {}

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

ReactDOM.render(<SomeComponent /> , document.getElementById("root"));
Run Code Online (Sandbox Code Playgroud)

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


编辑

这个:

var component = SomeComponent;
Run Code Online (Sandbox Code Playgroud)

将类的引用分配SomeComponentcomponent变量中,这意味着如果您这样做,那么您可以同时执行两者,并且它们是相同的:

var componentInstance1 = <SomeComponent />
var componentInstance2 = <component />
Run Code Online (Sandbox Code Playgroud)

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

var component = new SomeComponent(props);
Run Code Online (Sandbox Code Playgroud)