Как визуализировать состояние в ReactJS? - PullRequest
2 голосов
/ 15 октября 2019

Я backend разработчик Python. Но мне нужно сделать простой front на React. Я посылаю request, я получаю response, но я не могу получить state.

class AppsList extends Component {
        state = {
            apps: []
        }

    componentDidMount() {
        axios.get('/apps')
          .then(function (response) {
            console.log(response);
            this.setState({
                apps: response.data
            })
          })
          .catch(function (error) {
            console.log(error);
          });
    }

    render() {
        return (
            <div>
                aaa
                <p>{this.state.apps}</p>
                aaa
            </div>
        );
     }
}

Ответ

enter image description here

Ответы [ 3 ]

2 голосов
/ 15 октября 2019

Попробуйте определить «это» из обещания и отобразить на this.state.apps вот так:

class AppsList extends Component {
        state = {
            apps: []
        }

    componentDidMount() {
        const {setState} = this;
        axios.get('/apps')
          .then(function (response) {
            console.log(response);
            setState({
                apps: response.data
            })
          })
          .catch(function (error) {
            console.log(error);
          });
    }

    render() {
        return (
            <div>
                aaa
                <div>
                  {this.state.apps.map((app) => {
                    return (<p key={app.id}>{app.name}</p>)
                  })}
                </div>
                aaa
            </div>
        );
     }
}
1 голос
/ 15 октября 2019

Обратный вызов не в обозначении стрелки.

Вы можете просто сделать:

.then(response => this.setState({ apps: response.data }))
0 голосов
/ 15 октября 2019

Вы можете сделать:

class AppsList extends Component {
    state = {
        apps: []
    }

componentDidMount() {
    axios.get('/apps')
      .then(function (response) {
        console.log(response);
        this.setState({
            apps: response.data
        })
      })
      .catch(function (error) {
        console.log(error);
      });
}

render() {
    return (
        <div>
            aaa
            <p>{this.state.apps.map(elem => <div>{elem.id} {elem.name}</div>)}</p>
            aaa
        </div>
    );
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...