самом верху, в APP.js а так же там функии-события для кнопок add to cart, такая проблема возникла, что при изменении стейта ِAPP.js -(на клик по кнопке add to cart)- все компоненты делают перерендер -(так как они дети APP.js)- и визуально как будто весь сайт заново загрузился))
шейхи реакта, как вы делаете такие штуки правильно?
Redux? PureComponent? React.memo?
только так?))
Ну раз тебе нужно максимально низкоуровнево, то замени на PureComponent или пропиши shouldComponentUpdate?
pure component не слышал ни разу, а shouldUpdate не использовал ни разу))
https://reactjs.org/docs/react-api.html#reactpurecomponent
Можешь сменить язык :)
Для функций используй просто обёртку React.memo https://reactjs.org/docs/react-api.html#reactmemo
блин, круто спасибо 😘
I do my best ^_^
А что такое pureComponent?
выше же ссылка https://reactjs.org/docs/react-api.html#reactpurecomponent
PureComponent - обычный компонент, который не совершает очередной рендер если не изменились this.props. Если вкратце
а я так сделал, заработало кстати, нёрм?))
у тебя всегда будет false
Это тоже самое, что сделать class App extends PureComponent
Да, ты прав, он смотрит по стейтам, а не по пропсам. Прошу прощения за невнимательность
Беру слова назад. PureComponent смотрит и на props и на state. React.PureComponent is similar to React.Component. The difference between them is that React.Component doesn’t implement shouldComponentUpdate(), but React.PureComponent implements it with a shallow prop and state comparison.
и сравниваются не сами объекты, а то что в них лежит
Йеп, очень яркое доказательство. {} === {}
кстати а почему не работало так this.state.cart !== nextState.cart ? cart of undefined говорил реакт
по такому куску кода ничего сказать нельзя
Обсуждают сегодня