javascript – 错误:相邻的JSX元素必须包装在一个封闭的标记中

前端之家收集整理的这篇文章主要介绍了javascript – 错误:相邻的JSX元素必须包装在一个封闭的标记中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图打印反应组件的道具,但收到错误.请帮忙:

片段:

  1. <!-- DOCTYPE HTML -->
  2. <html>
  3. <head>
  4. <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.4.2/react.min.js"></script>
  5. <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.4.2/react-dom.min.js"></script>
  6. <script src="http://fb. me/JSXTransformer-0.12.1.js"></script>
  7. <!-- gap above is intended as else stackOverflow not allowing to post -->
  8. </head>
  9. <body>
  10.  
  11. <div id="div1"></div>
  12.  
  13. <script type="text/jsx">
  14.  
  15. //A component
  16. var George = React.createClass({
  17. render: function(){
  18. return (
  19. <div> Hello Dear!</div>
  20. <div>{this.props.color}</div>
  21. );
  22. }
  23. });
  24.  
  25. ReactDOM.render(<George color="blue"/>,document.getElementById('div1'));
  26.  
  27. </script>
  28. </body>
  29. </html>

我期待“亲爱的你好!”然后下一行“蓝色”.但是,我收到了这个错误.

错误

解决方法

反应v16及更高版本

从React v16开始,React组件可以返回一个数组.这在v16之前是不可能的.

这样做很简单:

  1. return ([ // <-- note the array notation
  2. <div key={0}> Hello Dear!</div>,<div key={1}>{this.props.color}</div>
  3. ]);

请注意,您需要为数组的每个元素声明一个键.根据官方消息来源,在React的未来版本中可能不需要这样做,但现在还没有.另外,不要忘记将数组中的每个元素分开,就像通常使用数组一样.

反应v15.6及更早版本

React Components只能返回一个表达式,但是您尝试返回两个< div>元素.

不要忘记render()函数就是一个函数.函数总是包含许多参数,并且始终只返回一个值(除非无效).

这很容易忘记,但你在编写JSX而不是HTML. JSX只是javascript的语法糖.因此,一个元素将被翻译为:

  1. React.createElement('div',null,'Hello Dear!');

这给出了一个React元素,您可以从render()函数返回,但不能单独返回两个元素.相反,你将它们包装在另一个具有这些div作为子元素的元素中.

official docs

Caveat:

Components must return a single root element. This is why we added a <div> to contain all the <Welcome /> elements.

尝试将这些组件包装在另一个组件中,以便只返回一个:

  1. //A component
  2. var George = React.createClass({
  3. render: function(){
  4. return (
  5. <div>
  6. <div> Hello Dear!</div>
  7. <div>{this.props.color}</div>
  8. </div>
  9. );
  10. }
  11. });
  12.  
  13. ReactDOM.render(<George color="blue"/>,document.getElementById('div1'));

猜你在找的JavaScript相关文章