will vida son receive react que props los getderivedstatefromprops example componentdidmount component ciclo actualizar reactjs

reactjs - vida - La clase extiende React. El componente no puede usar getInitialState en React



react getderivedstatefromprops (3)

Estoy cortando la sintaxis de ES6 en React, y escribo los componentes como:

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

pero el navegador me arroja una advertencia sobre:

Advertencia: getInitialState se definió en Loginform, una clase simple de JavaScript. Esto solo es compatible con las clases creadas con React.createClass. ¿Querías definir una propiedad estatal en su lugar?

Puedo manejarlo con la sintaxis tradicional var Loginform = React.createClass pero ¿cuál es la sintaxis correcta de ES6?

Otra pequeña cosa, creo que en la sintaxis tradicional React.createClass es un objeto, por lo que las funciones están separadas por comas, pero con la clase extends requiere punto y coma, no lo entiendo bien.


Ejemplo de ES6: estado, 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, };


No necesita punto y coma ni comas entre las declaraciones de método de clase ES6.

Para las clases ES6, getInitialState ha quedado en desuso a favor de declarar un objeto de estado inicial en el constructor:

export default class Loginform extends React.Component { constructor(props, context) { super(props, context); this.state = { name: '''', password: '''' }; }; }


Si usamos el campo de clase, siguiente está funcionando.

state = { name: '''', password: '''' }

Esto se puede usar en lugar de

constructor(props, context) { super(props, context); this.state = { name: '''', password: '''' }; };