在我正在调用的 app.jsx 文件中说:
var Main = require('./components/main.jsx');
ReactDOM.render(
<Main />, document.getElementById('container')
);
在我的 main.jsx 文件中,我想从不同的文件调用两个 React 类:
var comp1 = require('./comp1.jsx')
var comp2 = require('./comp2.jsx')
const MyMainComponent = React.createClass({
return(
<comp1></comp1>
<comp2></comp2>
);
});
module.exports = MyMainComponent;
在我的 comp1 文件中,我有一个简单的按钮和对话框:
var comp1 = React.createClass({
return(
<RaisedButton label="comp1" primary={true} onTouchTap={this._handleTouchTap} />
<dialog name = "test"></dialog>
_handleTouchTap: function(){
test.show()
};);
在我的 comp2 文件中,我的代码与 comp1.jsx 完全相同,只是我重命名了按钮。本质上,当文档加载 main.jsx 时,我希望两个组件(comp1 和 comp2)紧邻加载。我编写了上面的代码,所以我不确定一般原则或语法是否正确,但我在一个非常高的水平上询问如何实现我上面描述的目标。谢谢
最佳答案
我认为您正在寻找的是异步模块定义(AMD)。 您可以使用 requirejs 来实现。
首先您必须配置它,您可以在 app.js 文件或任何您想要的文件中进行配置:
require.config({
paths: {
react: 'vendor/react',
reactDOM: 'vendor/react-dom',
JSXTransformer: 'vendor/JSXTransformer'
}
});
require(['reactDOM', 'jsx!main'], function(ReactDOM, Main) {
ReactDOM.render(<Main />, document.getElementById('container'));
});
加载库后,您可以像这样定义模块:
comp1.jsx(或任何其他模块)
define(['react'], function(React) {
var Comp1 = React.createClass({
render: function() {
return (
)
}
});
return Comp1;
});
main.jsx
define(['jsx!comp1', 'jsx!comp2'], function(Comp1, Comp2) {
var Main = React.createClass({
render: function() {
return (
<section>
<Comp1 />
<Comp2 />
</section>
);
}
});
return Main;
});
最后,在您的 HTML 文件中:
<script data-main="js/app" src="js/vendor/require.js"></script>
如果您是初学者,这可能看起来很复杂,但是在处理大型项目时这是值得的,所以最好让它成为一种习惯。
我还强烈建议您阅读一些有关编程的书籍。尝试 Javascript 好的部分,以及务实的程序员
关于javascript - 如何在 react 中将单独文件中的组件链接在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34447102/