类扩展React.Component不能在React中使用getInitialState

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

我正在使用React中的ES6语法,并编写如下组件:

export default class Loginform extends React.Component {
    getInitialState() {
        return {
          name: '',
          password: ''
        };
    };
}

但浏览器引发了我一番担忧:

警告:getInitialState在Loginform(一个普通的JavaScript类)上定义。这仅支持使用React.createClass创建的类。

我可以用传统的语法来处理它,var Loginform = React.createClass但是什么是正确的ES6语法?

提问于
用户回答回答于

在ES6类方法声明之间不需要分号或逗号。

对于ES6类,getInitialState不赞成在构造函数中声明初始状态对象:

export default class Loginform extends React.Component {
  constructor(props, context) {
    super(props, context);

    this.state = {
      name: '',
      password: ''
    };
  };
}
用户回答回答于

ES6示例:state、defaultProps、protype

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,
};

扫码关注云+社区