有问题的项目正在使用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简写语法吗?
答案 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及更高版本支持片段语法。