Задать вопрос
@Adventure2068

Как обновлять state при обновлении props?

Есть компонент, который получает prop из родительского компонента, который меняется в зависимости от значения input в род. компоненте. В зависимости от этого prop нужно фильтровать массив данных, и присваивать его state данного компонента. Как лучше это сделать? Если я обновляю state в componentDidUpdate выводит ошибку о бесконечном цикле.
class CardsWrapper extends Component {
    constructor(props){
        super(props)
        this.state = {
            films: [],
            currentSearch: props.currentSearch
        }

    }

    componentDidUpdate(prevProps, prevState){
        let search = this.props.currentSearch
        let films = filmsArray.filter(obj => !obj.title.search(search))

        }
    }

    render(){
        return (
            <div>
                <ul>
                    {this.state.currentSearch   }
                </ul>
            </div>
        )
    }


}

export default CardsWrapper
  • Вопрос задан
  • 1506 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Frontend-разработка на React
    10 недель
    Далее
  • ProductStar
    React: отточите навыки интерфейсной разработки
    6 недель
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
Решения вопроса 1
0xD34F
@0xD34F Куратор тега React
Если я обновляю state в componentDidUpdate выводит ошибку о бесконечном цикле.

Добавьте проверку, что изменились именно props:

componentDidUpdate(prevProps, prevState) {
  if (this.props.currentSearch !== prevProps.currentSearch) {
    // ваш код с вызовом setState
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Jasulan98
сначала надо через shouldcomponentupdate проверить обновить или нет(true or false).
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Екатеринбург
от 50 000 до 90 000 ₽
от 250 000 до 300 000 ₽