Можно ли инициализировать состояние компонента данными API перед первоначальным монтированием компонента?

В моем приложении для реагирования я хотел бы инициализировать состояние моего компонента, используя данные API. Один из возможных способов — сделать вызов API в useEffect(), а затем установить состояние после вызова API, но это произойдет после первоначального монтирования компонента.

Мне просто интересно, есть ли другие способы инициализировать состояние перед первоначальным монтированием компонента? Вот что я пробовал, и это не работает.

async function getAns() {
    let output = [];
    //make api calls and assign data to output
    //.......
    return output;
  };

const [playersList, setPlayersList] = useState(getAns());

Большое спасибо за любой совет!

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

Rotem 16.05.2022 02:03

Вы можете сделать это в родительском компоненте и передать его как реквизит.

cSharp 16.05.2022 02:22

Есть ли конкретная проблема, которую вы пытаетесь решить, или вы просто интересуюсь, если что-то возможно? Короткий ответ: да, можно инициализировать состояние компонента данными API. В принципе, можно инициализировать состояние компонента с помощью значения Любые, которое вам нравится. Очень распространен шаблон React для использования хука useEffect для отправки вызовов для получения данных, которые хранятся в локальном состоянии компонента.

Drew Reese 16.05.2022 05:09
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
3
46
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать async-await со своей функцией и загружать компоненты только тогда, когда в состоянии есть данные ответа от вашего вызова API.

import React,{useState, useEffect} from 'react';

const Component = () => {
  const [playerList, setPlayerList] = useState();

 async function getAns(){

   let output = await //make api calls and assign data to output
    
   return setPlayerList(output);

  };

  useEffect(() => {
    getAns();
  }, [])

return (
  {playerList && (
    // Component jsx elements
)}
)
}

export default Component;

Другие вопросы по теме