ApiFetch передает переменную из функции JS - PullRequest
0 голосов
/ 13 марта 2020

Я делаю вызов API для конечной точки, и внутри apiFetch я получаю значение. Я хочу отобразить это значение вне функции, но оно не обновляется. Есть идеи, почему это происходит?

save: () => {
          var newValue="default";
          apiFetch( { path:'/url', } ).then( res => {
          newValue = (res[0].value);

          // this shows the new value
          console.log(newValue);

      } );
      //this shows "default"
      return <p>{newValue}</p>
    }

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Похоже, вам нужно вернуть ваше обещание. Прямо сейчас вы делаете асин c запрос к API, и пока он делает это, вы возвращаете newValue, который по-прежнему просто 'default.

Попробуйте так:

save: () => {
  var newValue = "default";
  return apiFetch({ path: '/url', }).then(res => {
    newValue = (res[0].value);

    // this shows the new value
    console.log(newValue);
    return <p>{newValue}</p>
  });
}
0 голосов
/ 13 марта 2020

Ваша функция асинхронная, вы можете использовать async / await

save: async () => {
  const response = await apiFetch( { path:'/url', } );
  const newValue = response[0].value;
  console.log(newValue);
  return <p>{newValue}</p>
}

Затем внутри блока вызывающего абонента:

const newValueParagraph = await yourobject.save();
...