是否无法访问构建链接到的html文件中已有的“已构建”组件?
我正在尝试以下内容 -
在bundle.js中
var React = require('react');
var ReactDOM = require('react-dom');
var Titles = React.createClass({
render() {
return (
<div>
<h1>{this.props.headerProp}</h1>
<h2>{this.props.contentProp}</h2>
</div>
);
}
});
在我的html页面中 -
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.3/JSXTransformer.js"></script>
<div id="con"></div>
<script type="text/javascript" src="/public/bundle.js'"></script>
<script type="text/jsx">
ReactDOM.render(<Titles headerProp = "Header from props..." contentProp = "Content
from props..."/>, document.getElementById('con'));
</script>
但是没有定义控制台输出React。
我甚至试图在捆绑中全局设置反应 -
window.React = React;
用窗口调用它。前缀但产生相同的结果。
答案 0 :(得分:3)
由于您提及的bundle.js
文件包含commonjs
样式导入的代码段,因此我假设您正在使用Webpack。
我对你的代码有一些考虑。
bundle.js
文件不会将任何模块公开为全局模块。这包括React和捆绑包内可能require
的任何其他模块。没有window.ModuleName
。但是,可以通过require.js在浏览器中访问这些模块,因为Webpack会将模块导出为UMD,也就是说,可以通过commonjs
或AMD
(Require.js)访问它们。 / LI>
var React = require("react"); window.React = React
的操作,那么它实际上将起作用。 window.x
)。你应该看看它。entry.js
文件(webpack配置的入口点)应该负责执行ReactDOM.render(..., document.getElementById("#app"))
之类的操作。所以,只要包含您的软件包,该应用就会自动呈现。每个人都这样做。JSXTransformer.js
以及<script type="text/jsx">
已被弃用。现在你应该使用Babel来编译React。