@Nick-Fisher

Где делать вызов фетча?

Добрый день. У меня есть таблица с данными и чекбокс. По умолчанию он находится в положении new и подтягивает данные с бэка по соответствующему фетчу(данные из которого пишутся в стейт) и другие данные в положении all. Вопрос в том, где именно мне делать первоначальный вызов. Если в рендере(что очевидно плохо, то он вызовет метод 2 раза, т.к. после сетстейта опять зайдет в рендер), если в компонент дид маунт, то вызов будет всего 1(нету возможно вызывать принудительно, фетч должен происходить в зависимости от чекбокса). Заранее спасибо.
  • Вопрос задан
  • 243 просмотра
Решения вопроса 2
@davidnum95
Автор, не мучайся https://codesandbox.io/s/821z9l0ym8
Ответ написан
Комментировать
rockon404
@rockon404 Куратор тега React
Frontend Developer
class Example extends React.Component {
  state = { filter: 'all' };

  componentDidMount() {
    this.props.fetchData(this.state.filter);
  }

  componentDidUpdate(prevProps, prevState) {
    if (prevState.filter !== this.state.filter) {
       this.props.fetchData(this.state.filter);
    }
  }
  
  render() { /* ... */ }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
tsepen
@tsepen
Frontend developer
Первый фетч в didMount, все последующие при событии onChange на чекбоксе.
Если в рендере вызвать то будет бесконечно вызываться и на этом все закончится)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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