Reactjs 如何直接使用ReactDOM呈现React组件(ES6API)?
我正在使用(通过使用TypeScript),并希望使用Reactjs 如何直接使用ReactDOM呈现React组件(ES6API)?,reactjs,typescript,ecmascript-6,react-dom,Reactjs,Typescript,Ecmascript 6,React Dom,我正在使用(通过使用TypeScript),并希望使用ReactDOM.render()呈现类型为React.Component的子类型类 以下代码起作用: class MyComponentProps { someMember: string; } class MyComponent extends React.Component<MyComponentProps, {}> { constructor(initialProps: MyComponentProps)
ReactDOM.render()
呈现类型为React.Component
的子类型类
以下代码起作用:
class MyComponentProps {
someMember: string;
}
class MyComponent extends React.Component<MyComponentProps, {}> {
constructor(initialProps: MyComponentProps) {
super(initialProps);
}
}
let rootNode = document.getElementById('root');
ReactDOM.render(
<MyComponent someMember="abcdef" />,
rootNode
)
我知道我可以使用JSX语法作为解决方法,但是由于我的
MyCustomProps
对象非常大,我不想重复MyCustomProps
对象的每个成员。您应该使用React.createElement
。
React.createElement
接受标记名或组件、属性对象和可变数量的可选子参数。
例如
另一种方式(不使用jsx)
实例-
类应用程序扩展了React.Component{
render(){
返回(
欢迎反应
);
}
}
render(React.createElement(App,null),document.getElementById('App')代码>
您不应该使用React.createElement(MyComponent,new MyComponentProps())
而不是new MyComponent(new MyComponentProps())
?确实,这会起作用的-我还可以通过查看编译的.jsx代码来判断,该代码将jsx语法精确地映射到该语法。如果你发表评论作为回答,我会将其标记为已接受。你回答中的最后一行代码就是我要找的,谢谢!未来的谷歌用户:如果你得到TypeError:react.js:5045,这是未定义的ReactDOM.render(react.createElement(),root)
而不是ReactDOM.render(,root)
?在ReactDOM.render()
ReactDOM.render(new MyComponent(new MyComponentProps()), rootNode);
class App extends React.Component {
render(){
return (
<div><h1>Welcome to React</h1></div>
);
}
}
ReactDOM.render(<App />, document.getElementById('app'));
ReactDOM.render(React.createElement(App, null), document.getElementById('app'));