我正在尝试React中的ES6语法,并编写如下组件:
export default class Loginform extends React.Component {
getInitialState() {
return {
name: '',
password: ''
};
};
}
但是浏览器给了我一个警告:
警告: getInitialState在Loginform上定义,这是一个普通的JavaScript类。只有使用React.createClass创建的类才支持此功能。您的意思是要定义一个状态属性吗?
我可以用传统语法var Loginform = React.createClass
来处理它,但是什么是正确的ES6语法呢?
另一个小问题,我认为在传统语法中,React.createClass
是一个对象,所以其中的函数用逗号分隔,但是对于extends
类,它需要分号,我不太理解它。
发布于 2015-10-31 09:42:04
您不需要在ES6类方法声明之间使用分号或逗号。
对于ES6类,为了支持在构造函数中声明初始状态对象,getInitialState
已被弃用:
export default class Loginform extends React.Component {
constructor(props, context) {
super(props, context);
this.state = {
name: '',
password: ''
};
};
}
发布于 2016-10-06 03:04:02
状态示例: ES6、defaultProps、propTypes
import React from 'react'
import ReactDom from 'react-dom';
export default class Item extends React.Component{
constructor(props){
super(props);
this.state = {
check:false,
};
this.click=this.click.bind(this);
}
click(){
this.setState({check:true});
}
render(){
const text=this.state.check?'yes':'no';
return(<div onClick={this.click}>{this.props.name} : <b>{text}</b></div>)
}
}
Item.defaultProps={
comment:"default comment",
};
Item.propTypes={
name:React.PropTypes.string.isRequired,
};
发布于 2018-06-15 00:04:09
如果我们使用class字段,下面的方法是可行的。
state = {
name: '',
password: ''
}
这可以用来代替
constructor(props, context) {
super(props, context);
this.state = {
name: '',
password: ''
};
};
https://stackoverflow.com/questions/33447149
复制相似问题