Задать вопрос
@0x80070005

Как отобразить индикатор загрузки для определенных секций?

Имеется статический json на клиенте
data.json:
[
   {
      “id”: “settings”,
      “name”: “Настройки”,
      “items”: [
         {“id”: “game”, “name”: “Включить игру”},
         {“id”: “retest”, “name”: “Перезагрузить“}
      ]
   },
   {
      “id”: “list”,
      “name”: “Список”,
      “items”: “server”
   }
]

Также у меня имеется rest api для получения списка list site.ru/api/list

Мой вопрос такой. Как мне отобразить статические данные этого json и items, но для тех items которые от сервера грузятся, нужно отобразить индикатор загрузки?

Пример работы:
<ul>
   <span>Настройки</span>
   <li>Включить игру</li>
   <li>Перезагрузить</li>
</ul>
<ul>
   <span>Список</span>
   // Отображаем индикатор загрузки… а после показываем все li 
</ul>
  • Вопрос задан
  • 70 просмотров
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 1
@Gumus171991
Можно убрать из data.json второй элемент массива(который отвечает за данные с сервера) и поместить его в код компонента в хук useState. При этом стоит установить значения для поля items, как undefined(т.к. данные пока не подгружены).
const [list, setList] = useState({
id: 'list',
name: 'Список',
items: undefined,
});

В возвращаемой разметке можем сделать условие, в котором будем проверять значение поля list.items и если его значение будет оличаться от undefined, то отображаем, иначе показываем лоадер.
Пример кода:
const ListComponent = () => {
  const [list, setList] = useState({
  id: 'list',
  name: 'Список',
  items: undefined,
  });

  useEffect(() => {
  // Код для подгрузки необходимых данных...
  }, []);

  return ( 
    <ul>
       <span>Настройки</span>
       <li>Включить игру</li>
       <li>Перезагрузить</li>
    </ul>
    <ul>
     <span>Список</span>
       {list.items ? (// Необходимая разметка) : <p>Загрузка...</p>}
     </ul>
  )
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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