Подтвердить что ты не робот

Класс расширяет React.Component не может использовать getInitialState в React

Я транслирую синтаксис ES6 в React и пишу такие компоненты, как:

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

но браузер меня бросает в глаза:

Предупреждение: getInitialState был определен на Logform, простой JavaScript класс. Это поддерживается только для классов, созданных с использованием React.createClass. Вы имели в виду определить свойство состояния вместо?

Я могу обработать его с помощью традиционного синтаксиса var Loginform = React.createClass, но какой правильный синтаксис ES6?

Еще одна мелочь, я думаю, что в традиционном синтаксисе React.createClass есть объект, поэтому функции в нем разделяются запятой, но с классом extends требуется точка с запятой, я не очень хорошо ее понимаю.

4b9b3361

Ответ 1

Вам не нужны точки с запятой или запятые между объявлениями класса класса ES6.

Для классов ES6 getInitialState устарел в пользу объявления начального объекта состояния в конструкторе:

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

    this.state = {
      name: '',
      password: ''
    };
  };
}

Ответ 2

Пример 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,
};