javascript - 为什么我们不能直接在浏览器中调用 ReactDOM 或 React?
问题描述
我是 React 的新手,我仍在努力了解它是如何工作的。
我知道在“编译”之前的 React 代码中,我们可以使用React.createElement
并ReactDOM.render
执行各种操作,但是在代码编译并在客户端上运行之后,假设我想用我的一个组件动态创建一个新的 DOM 节点。
添加一些代码以进行进一步说明
这是我的 index.js:
import React from 'react'
import ReactDOM from 'react-dom'
class HelloWorld extends React.Component {
render() {
return (
<div>
Hello World!
</div>
)
}
}
ReactDOM.render(
//React Element,
<HelloWorld />,
//where to render the Element to
document.getElementById('hello')
)
这工作正常。但是,当我尝试通过 devtools 控制台动态添加组件“实时”并键入React.createElement
时,我得到:
React is not defined
与 ReactDOM 相同。它们不能通过控制台使用吗?我的理解中可能缺少一些东西,我正在考虑这个错误但是如果我的 index.js 能够调用,究竟是如何定义React
而不是定义?谢谢!ReactDOM
ReactDOM.render
解决方案
在以下情况下,可以在控制台中使用 React 和 ReactDOM:
你从 webpack 的入口点导出你在全局范围内需要的东西。例如:
export {React, ReactDOM, LeaveStats }
从 webpack 生成的包通过非模块脚本包含在 HTML 页面中
Webpack 配置为输出一个“库”,如下所示:
module.exports = {
entry: './app/LeaveStats.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
library: 'ReactApp' // <-- this will allow us access to whatever is exported in ./app/LeaveStats.js
},
module: {
rules: [
{ test: /\.js$/, use: 'babel-loader' },
]
},
mode: 'development'
}
然后,您可以从全局范围访问和访问React
,例如:ReactDOM
LeaveStats
ReactApp.ReactDOM.render(
ReactApp.React.createElement(ReactApp.LeaveStats),
document.getElementById("mydiv")
)
并不是说我真的会使用它,而是帮助我理解了一些事情。
推荐阅读
- c# - 尝试获取已修改的 DataGridView 行时出现 NullReferenceException
- python - pandas/numpy 中的灵活功能
- json - 我有来自登录 API 的 json body 响应。我为那个json做了一个模型类。现在如何在我的页面中使用它来获取数据?
- reactjs - useState 未使用过滤数组设置初始状态
- python - 我可以一次只打印其中一个问题吗?
- c# - 使用 MemoryStream 和 CryptoStream 时清除 Gen2 和 LOH 中的堆
- java - Car 对象和 Dog 对象是否用于现实生活中的程序?
- xamarin - 通过 TabBar Xaml 将视图模型中的参数传递给页面的 ctor?
- flask - 如何正确更新具有新值的外键?
- javascript - 在前端从 nodejs 管理 jwt