Как использовать ax ios от переднего конца реагирования, чтобы получить объект от nodejs при загрузке компонента (useEffect) - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть следующая настройка ниже, и я пытаюсь получить allQuestions (объект) из nodejs бэкэнда и установить его состояние в состояние вопросов. console.log (data) показывает мой желаемый ответ, но setQuestion (data) и console.log (question) возвращает пустой объект. смысл поставленный вопрос не сработал. и я собираюсь отобразить объект вопроса после установки нового состояния.

const Questions = (props) => {

  const [question, setQuestion] = useState({});

  useEffect(() => {
    axios.get(`http://localhost:4000/questions`)
    .then(res => {
      const data = res.data.allQuestions;
      console.log(data);
      setQuestion(data);
      console.log(question);
    })
    .catch(error => {
      console.log(error);
  });

  },[]);

1 Ответ

0 голосов
/ 05 апреля 2020

setQuestion - это асинхронный вызов c, означающий, что он не будет обновляться сразу. Вместо того, чтобы делать console.log(question) сразу после установки состояния, вы должны сделать следующее:

  useEffect(() => {
    console.log(question);
  },[question]);

Этот useEffect будет запущен, как только вопрос действительно изменится.

...