React片段速记无法编译

时间:2018-01-18 07:59:58

标签: javascript reactjs create-react-app

有问题的项目正在使用React-16.2.0,它能够使用Fragments和Fragment简写。

https://reactjs.org/blog/2017/11/28/react-v16.2.0-fragment-support.html

虽然全长语法工作正常......

import React, { Fragment, Component } from 'react';

class TestingFragment extends Component {
    render() {
        return (
            <Fragment>
                <span>This is a fragment of text </span>
                <div>Another part of the fragment</div>
            </Fragment>
        )
    }
};

export default TestingFragment

速记无法编译,我不知道为什么会这样。例如......

import React, { Component } from 'react';

class TestingFragment extends Component {
    render() {
        return (
            <>
                <span>This is a fragment of text </span>
                <div>Another part of the fragment</div>
            </>
        )
    }
};

export default TestingFragment

无法编译如下......

Failed to compile
./src/testingFragments.js
Syntax error: Unexpected token (6:4)

  4 |   render() {
  5 |       return (
> 6 |           <>
    |            ^
  7 |               <span>This is a fragment of text </span>
  8 |               <div>Another part of the fragment</div>
  9 |           </>
This error occurred during the build time and cannot be dismissed.

这里有什么东西我缺少Fragment简写语法吗?

3 个答案:

答案 0 :(得分:16)

我认为这是一个原因:

https://reactjs.org/blog/2017/11/28/react-v16.2.0-fragment-support.html#support-for-fragment-syntax

<强> screenshot

create-react-apps目前使用 Babel 6.26.0 完全支持React.Fragment需要 Babel v7.0.0-beta.31 及以上

=======================编辑

现在正在使用create-react-app v2 https://reactjs.org/blog/2018/10/01/create-react-app-v2.html

答案 1 :(得分:5)

您可以使用穷人的片段速记作为快速解决方案:[ , ]

render(){
  return [
    <div>foo</div>,
    <div>bar</div>
  ]
}

因为数组完全是有效的jsx元素。

答案 2 :(得分:0)

仅Babel v7.0.0-beta.31及更高版本支持片段语法。