Reactjs 组件定义中的Babel语法错误
我只是按照这些解释: 其中提到:Reactjs 组件定义中的Babel语法错误,reactjs,ecmascript-6,babeljs,Reactjs,Ecmascript 6,Babeljs,我只是按照这些解释: 其中提到: // The ES6+ way class Video extends React.Component { static defaultProps = { autoPlay: false, maxLoops: 10, } static propTypes = { autoPlay: React.PropTypes.bool.isRequired, maxLoops: React.PropTypes.number.isR
// The ES6+ way
class Video extends React.Component {
static defaultProps = {
autoPlay: false,
maxLoops: 10,
}
static propTypes = {
autoPlay: React.PropTypes.bool.isRequired,
maxLoops: React.PropTypes.number.isRequired,
posterFrameSrc: React.PropTypes.string.isRequired,
videoSrc: React.PropTypes.string.isRequired,
}
state = {
loopsRemaining: this.props.maxLoops,
}
}
但如果我这样做:
class AddUserGeolocation extends React.Component {
static propTypes = {
alreadyAsked: React.PropTypes.bool.isRequired
}
componentDidMount {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition((position) => {
dispatcher(addUser('You', position.coords.latitude, position.coords.longitude))
});
dispatcher(askedForUserLocation())
}
};
render() {
let result = this.props.alreadyAsked ? 'Asked' : 'Not yet'
return (
<div>
{result}
</div>
)
}
}
这里怎么了
我对ES6、ES7、ES2015、Babel等感到困惑
使用:
"
对于类静态属性,您需要在Babel中安装并启用:
$ npm install --save-dev babel-preset-stage-0
并确保您的Babel配置使用它:
"presets": [ "es2015", "stage-0" ]
谢谢。我读到这是ES7而不是ES6。如果我更喜欢ES6,还有什么选择呢?@AugustinRiedinger,基本上是
AddUserGeolocation.propTypes={…}
@AugustinRiedinger:这不是ES7。ES7是今年即将发布的规范更新的通俗说法。此版本的新功能已经完成。类属性是一个建议,可能包含在未来版本的ECMAScript中,也可能不包含在其中。这就是为什么我现在不想使用它的原因:-)另外,state={loopsRemaining:this.props.maxLoops,}
变成constructor(…args){super(…args);this.state={loopsRemaining:this.props.maxLoops,};}
$ npm install --save-dev babel-preset-stage-0
"presets": [ "es2015", "stage-0" ]