отображение данных коллекции из mongodb с использованием axios в reactjs

#node.js #reactjs #mongodb #express #axios

#node.js #reactjs #mongodb #экспресс #axios

Вопрос:

Я новичок в MERN и пытаюсь отображать данные из коллекции mongodb с использованием axios. Я пытаюсь отобразить список городов на веб-странице. Я не уверен, делаю ли я это для записи. Должен ли я использовать super state?jsonpostman

Вот мой код reactjs:

     import React, { Component } from 'react';
import axios from 'axios';

export class Cities extends Component {
constaractor(state) {

  state = {
  locations:[]
  };
}

  componentDidMount() {
    axios.get('/cities')
    .then(cities => console.log(cities.data))
    .catch(e => console.log(e))
  }
  render() {
    const cities=this.state.locations.map(location => (
      <div key={location._id}>
     <h1>{location.city}</h1>
      <p>{location.contry}</p>
        <h1>Cities</h1>
      </div>
    ));

    return (
      <div className="Cities">
        {cities}
      </div>
    );
  }
}

export default Cities
  

Комментарии:

1. вы не устанавливаете состояние в своем коде: попробуйте: .then(cities => cities.json()).then(cities => this.setState({местоположения: города}))

Ответ №1:

Вы должны не забыть установить состояние, как только получите данные обратно из своего источника данных.

 import React, { Component } from 'react';
import axios from 'axios';

export class Cities extends Component {
constaractor(state) {

  state = {
  locations:[]
  };
}

  componentDidMount() {
    axios.get('/cities')
    .then(({ data}) => this.setState({ locations: data })) // <-- set state
    .catch(e => console.log(e))
  }
  render() {
    const cities=this.state.locations.map(location => (
      <div key={location._id}>
     <h1>{location.city}</h1>
      <p>{location.country}</p> // <-- you had a typo here
        <h1>Cities</h1>
      </div>
    ));

    return (
      <div className="Cities">
        {cities}
      </div>
    );
  }
}

export default Cities