简体   繁体   English

在React中渲染彼此相邻的两个组件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM