This está indefinido, porque? No debería ser la propia clase? <code>handleChange = e =&gt; { // console.log({ // name: e.target...

Pregunta de la clase:
Manejo de estado
Jose Daniel Molina

Jose Daniel Molina

Pregunta
studenthace 5 años

This está indefinido, porque?

No debería ser la propia clase?

handleChange = e => { // console.log({ // name: e.target.name, // value: e.target.value, // }); console.log(this); this.setState({ firstName: e.target.value }); }```
3 respuestas
para escribir tu comentario
    Luis Lira

    Luis Lira

    studenthace 5 años

    Ya lo revisé, sólo que en tu marcado falta dos etiqueta, la que cierra el

    form
    y la que cierra un
    div
    de form-group.

    Si llamas

    handleChange(e) { }
    se está creando un nuevo context, por lo que no hereda el
    this
    de la clase que está ejecutando el método.

    Pero si lo llamo con un arrow function (como el de la pregunta original) no me sale undefinend, me logea la clase "BadgeForm"

    class BadgeForm extends React.Component{ state = { firstName: '', lastName: '', email: '', jobTitle: '', twitter: '' }; handleChange = e => { console.log(this) this.setState({ [e.target.name]: e.target.value }); } handleClick = e => { console.log('Button was clicked'); } handleSubmit = e => { e.preventDefault(); console.log(this.state); } render(){ return ( <div> <h1>NewAttendant</h1> <form onSubmit={this.handleSubmit}> <div className="form-group"> <label>FirstName</label> <input onChange={this.handleChange} type="text" name="firstName" className="form-control" /* Leyendo de un estado */ value={this.state.firstName} /> </div> </form> </div> ); } } export default BadgeForm;
    Jose Daniel Molina

    Jose Daniel Molina

    studenthace 5 años
    class BadgeForm extends React.Component { state = { firstName: '', lastName: '', email: '', jobTitle: '', twitter: '' }; // Aqui, this es undefined, se esta llamando a esta funcion desde fuera de la clase, por el click, pero debería mostrar un valor, no? handleChange(e){ // console.log({ // name: e.target.name, // value: e.target.value, // }); this.setState({ [e.target.name]: e.target.value }); } handleClick = e => { console.log('Button was clicked'); } handleSubmit = e => { e.preventDefault(); console.log(this.state); } render(){ return ( <div> <h1>New Attendant</h1> <form onSubmit={this.handleSubmit}> <div className="form-group"> <label>First Name</label> <input onChange={this.handleChange} type="text" name="firstName" className="form-control" /* Leyendo de un estado */ value={this.state.firstName} /> </div> ); } } export default BadgeForm;```
    Luis Lira

    Luis Lira

    studenthace 5 años

    ¡Hola!

    Sí,

    this
    debería ser la clase, ¿podrías mostrarnos tu código completo para ver qué puede estar pasando? :D

Curso de React.js [Empieza Gratis]

Curso de React.js [Empieza Gratis]

React es una de las librerías más utilizadas hoy para crear aplicaciones web. Aprende desde la creación y diseño de componentes hasta traer datos de un API. Desarrolla aplicaciones web de muy alta calidad en tiempo record con React.js

Curso de React.js [Empieza Gratis]
Curso de React.js [Empieza Gratis]

Curso de React.js [Empieza Gratis]

React es una de las librerías más utilizadas hoy para crear aplicaciones web. Aprende desde la creación y diseño de componentes hasta traer datos de un API. Desarrolla aplicaciones web de muy alta calidad en tiempo record con React.js