@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
  • Вопрос задан
  • 1482 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега React
Если я обновляю state в componentDidUpdate выводит ошибку о бесконечном цикле.

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

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

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

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