0

Tengo un problema al actualizar una variable dentro el state de react.

import React from 'react'
import ReactDOM from 'react-dom'
import axios from 'axios'

class Personas extends React.Component {
  constructor(props) {
    super(props)

    //Creo mi variable state
    this.state = {
      datos: []
    }
  }

  //hago una funcion asincrona para hacer la peticion de mi nuevo dato json
  async update(event) {

    const self = this

    try {
      //con axios hago la petición para obtener mi nuevos valores
      await axios.post('./getPersonsConnect/').then((e) => {
        //intento cambiar el valor del state (el self es una variable asignada con el this del padre por cuestión del scope de la funcion)
        self.setState({
          datos: e.data
        })
      })
      //imprimo en consola el state pero sigue estando a como se asignó
      console.log(self.state)

    } catch (e) {
      console.log(e)
    }


    lista = self.state.datos.map((item) => {
      return (
      <li key={item.id}>
                <figure>
          <img src='avatar/default.png' alt='avatar' />
          <figcaption>
            { item.usuario }
            <span className={ 'status', (item.estado == 'conectado') ? 'connect' : 'disconnect' }>{ item.estado }</span>
          </figcaption>
                </figure>
            </li>
      )
    })
  }

  //aquí solo hago render mis datos :)
  async render() {
    await this.update()

    return ( 
        <ul>
        <li className = 'buscador' >
        <input type = 'text' placeholder = 'Buscar Persona' / >
        </li> {this.lista} 
      </ul>
    );
  }
}

export default Personas

Por cualquier duda estaré al tanto, Saludes

Samuel Sobalvarro
  • 1,119
  • 5
  • 23
  • 1
    El método funciona, lo que pasa es que lo estás llamando antes de que la función que le pasas a `then` se ejecute con la respuesta – Pablo Lozano Mar 12 '18 at 15:53
  • La petición funciona bien, lo que hacía falta era aplicar el ".bind()" a mi metodo en el constructor para poder cambiar el state de mi clase Personas, Saludos! – Samuel Sobalvarro Oct 05 '18 at 23:01

0 Answers0