我正在尝试在React JS中使用DRY。我正在尝试在不同的文件中使用相同的HTML部分
部分:
var AdminMenu = React.createClass({
getInitialState: function() {
return {};
},
render: function() {
return (
<h1>Menu</h1>
);
}
});
我在另一个文件中将其记录下来:
require('./scripts/adminMenu.js');
ReactDOM.render(
<AdminMenu/>,
document.getElementById('content')
);
但是我收到了一个错误:
Uncaught ReferenceError: require is not defined
这个脚本包含在html页面上,如:
<script type="text/babel" src="scripts/admin.js"></script>
我正在使用webpack
答案 0 :(得分:5)
如果您没有使用任何模块捆绑包,例如webpack等。 您应该将组件分配给某个javascript全局对象,因为.jsx中的对象不会放在全局范围
中所以这是解决方案(在这里使用窗口对象)
定义模块:
window.AdminMenu = React.createClass({
getInitialState: function() {
return {};
},
render: function() {
return (
<h1>Menu</h1>
);
}
});
您使用它的地方:
ReactDOM.render(
<window.AdminMenu/>,
document.getElementById('content')
);
答案 1 :(得分:4)
You have to use
const { Component } = React;
const { render } = ReactDOM;
in place of
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
答案 2 :(得分:2)
考虑使用ES6模块,而不是使用React
导出模块:
// src/hello.js
// export as default
export default const hello = ({name}) => (
<h1>Hello {name}</h1>
)
导入模块:
// src/index.js
// import from relative directory (src)
import Hello from './hello'
const App = () => {
return (
<div>
<Hello name="Pavel" />
</div>
)
}
答案 3 :(得分:2)
您应该阅读有关模块的更多信息,例如:https://www.sitepoint.com/understanding-es6-modules/
现有代码中的主要问题是:
此外,如果对您来说更方便,您可以用俄语在评论中写问题