Класс расширяет 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
требуется точка с запятой, я не очень хорошо ее понимаю.
Ответы
Ответ 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,
};