当我没有在我的client.js中导入“React”时,我正在学习React并且在我的代码不起作用时感到困惑。理想情况下,当我在代码中不使用“React”时,我不应该强制导入“react”模块。以下是代码段。
Layout.js:
import React from "react";
export default class Layout extends React.Component {
constructor () {
super();
this.name = "Dilip";
}
render () {
return (
<h1>Welcome {this.name} in React world !!</h1>
)
}
}
工作代码:
import React from "react";
import ReactDOM from "react-dom";
import Layout from "./components/Layout"
const app = document.getElementById('app');
ReactDOM.render(<Layout/>, app);
不工作代码:
import ReactDOM from "react-dom";
import Layout from "./components/Layout"
const app = document.getElementById('app');
ReactDOM.render(<Layout/>, app);
当我删除导入“React”的代码时,为什么它不起作用?我没有在任何地方使用“React”因此它应该工作。它在控制台中抛出以下错误。
Uncaught ReferenceError: React is not defined
注意:我正在关注video
答案 0 :(得分:11)
@Matteo错了。虽然ReactDOM
确实取决于React
,但它需要在自己的代码中使用它。
您需要导入React
的真正原因是JSX
摘要:
<Layout/>
只有语法糖:
React.createElement(Layout)
因此,在JSX编译之后,实际上需要React。 ;)
答案 1 :(得分:1)
ReactDOM依赖于React。 From NPM Package Manager,你可以看到你需要在夫妻中使用:
npm install 反应 react-dom
描述谈到:
它旨在与同构的React配对,它将是 作为对npm的反应而发货。
希望这澄清