Задать вопрос
@vaskadogana
Frontend developer

ShouldComponentUpdate всегда возвращает true, что не так? Рендер элемента происходит, как определить?

скрин пропсов storage8.static.itmages.com/i/17/0223/h_1487848793...

скрин после изменений в элементе имеющем общего предка, причем, там меняется только state.

ниже код из элемента в котором не хочу делать рендер.
shouldComponentUpdate(nextProps, nextState) {
	  		console.log('this.props: ', this.props, 'nextProps: ', nextProps);
	  		console.log('this.state: ', this.state, 'nextState: ', nextState)
	  		if ((this.props === nextProps) && (this.state === nextState)){
	            return false
	        } else { return true }

	  	}
		render(){
			console.log("render FilterForAll")


p.s. Это ж вроде фишка реакт, что ренедрится только часть которая поменялась, а не весь dom целиком, с таким раскладом выходит, что рендерится весь вирутальный dom заново. Или я что то не так понял?
  • Вопрос задан
  • 297 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Bobert88
@Bobert88
Vice President of Javascript, very important guy.
К сожалению, вот это условие не работает:
(this.props === nextProps) && (this.state === nextState)


Даже если содержание этих объектов одинаковое, с точки зрения js это разные объекты и они не равны. Если вы хотите иметь возможность легко сравнивать объекты, то стоит посмотреть в сторону immutable структур: https://facebook.github.io/immutable-js/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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