Как загрузить данные до отрисовки в React?

Привет, как-нибудь можно загрузить данные из Rest API до выполнения render, пробовал сделать с помощью componentDidMount, но данные подгружаются чуть позже, т.е страница пустая несколько секунд после загрузки, как с этой проблемой можно бороться?
  • Вопрос задан
  • 3215 просмотров
Решения вопроса 3
@lnked
`componentDidMount ` срабатывает после `render`, вы можете показать прелоадер пока данные грузятся, после загрузки покажете данные

class example extends React.Component {
  state = {
    data: [],
    isLoading: true,
  }

  componentDidMount() {
    fetch('example/url')
      .then(response => response.json())
      .then(data => this.setState({ data }))
  }

  render() {
    const { isLoading } = this.state

    if (isLoading) {
      return <div>Загрузка</div>
    }

    return data.map(item => <div key={item.id}>{item.name}</div>)
  }
}
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега React
Так дела не делаются. Страницу следует отрисовывать сразу, а пока данные не загрузились, пользователю показывают индикатор загрузки:

data ? <КакойТоКомпонентДляОтображенияДанных data={data} /> : <Preloader />
Ответ написан
Комментировать
@Aniro
Очевидно, что если данных нет - отображать нечего. Так что придется или придумать чем занять страницу до того как они подгрузятся - как вариант, добавить вэйтер. Или - использовать server-side рендеринг. componentWillMount тут не поможет - потому что запрос к API в любом случае занимает какое-то время.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы