[英]Render two components adjacent to each other in React
I am trying to call a component from another component to display some html and it works if I call the component alone, but if I add more markup inside the same return function, it throws the following error: 我试图从另一个组件调用一个组件来显示一些html,如果我单独调用该组件它可以工作,但如果我在同一个返回函数中添加更多标记,它会抛出以下错误:
Adjacent JSX elements must be wrapped in an enclosing tag (9:12) while parsing file
Product.jsx Product.jsx
var React = require('react');
var Product = React.createClass({
render: function() {
return (<p>Product</p>);
}
});
module.exports = Product;
ProductSlider.jsx (Works) ProductSlider.jsx(作品)
var React = require('react');
var Product = require('./Product.jsx');
var ProductSlider = React.createClass({
render: function() {
return (
<div><Product /></div>
);
}
});
module.exports = ProductSlider;
ProductSlider.jsx (Doesn't Work) ProductSlider.jsx(不起作用)
var React = require('react');
var Product = require('./Product.jsx');
var ProductSlider = React.createClass({
render: function() {
return (
<div><Product /></div>
<div><p>Something else</p></div>
);
}
});
module.exports = ProductSlider;
Does anybody knows what is wrong with this code? 有人知道这段代码有什么问题吗?
You have to wrap a rendered component in a top level component, that's your problem. 您必须将渲染的组件包装在顶级组件中,这是您的问题。 If you did
如果你这样做了
return (
<div>
<div><Product /></div>
<div><p>Something else</p></div>
</div>
);
It would work. 它会工作。
You don't need a top level <div>
wrapper 您不需要顶级
<div>
包装器
If you are using react 16.2+. 如果你正在使用react 16.2+。 Simply use Fragments :
只需使用碎片 :
return(
<Fragment>
<div><Product /></div>
<div><p>Something else</p></div>
</Fragment>
)
You can also try this way: 您也可以尝试这种方式:
return(
[
<div key="unique1"><Product /></div>
<div key="unique2"><p>Something else</p></div>
]
)
Note: key
should be unique. 注意:
key
应该是唯一的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.