Задать вопрос
Antonoff
@Antonoff
Разработчик

React не могу правильно вытащить переменные, чтобы рендерить их в компоненте?

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

...

const StoryItem = (props) => {

  let id, time, score, url, title, author;

  if(props.storyId !== "") {
    api.getStoryItem(props.storyId)
      .then((response) => {
        if(response.data) {
          id = response.data.id;
          time = response.data.time;
          score = response.data.score;
          url = response.data.url;
          title = response.data.title;
          author = response.data.by;
        }
    });
  }

  return (
    <div>
      <ul>
        <li>
          {props.storyId} {title}
        </li>
      </ul>
    </div>
  );

};

...
  • Вопрос задан
  • 123 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@d-virt
Ошибка заключается в том, что переменные инициализируются позже ретурна - это обусловлено тем, что идет вызов асинхронного запроса.

Собственно, что бы понять на практике, вставьте console.log и посмотрите, что, когда сработает.

const StoryItem = (props) => {

  let id, time, score, url, title, author;

  if(props.storyId !== "") {
    api.getStoryItem(props.storyId)
      .then((response) => {
        if(response.data) {

console.log('init var');
          id = response.data.id;
          time = response.data.time;
          score = response.data.score;
          url = response.data.url;
          title = response.data.title;
          author = response.data.by;
        }
    });
  }

console.log('return result');
  return (
    <div>
      <ul>
        <li>
          {props.storyId} {title}
        </li>
      </ul>
    </div>
  );

};
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы