Comments 7
От
мне стало физически плохо, почему нельзя сделать просто
?
P.S. я понимаю что это перевод, вопрос скорее риторический.
shouldComponentUpdate(nextProps, nextState) {
if (this.props.color !== nextProps.color) {
return true;
}
if (this.state.count !== nextState.count) {
return true;
}
return false;
}
мне стало физически плохо, почему нельзя сделать просто
shouldComponentUpdate(nextProps, nextState) {
return (this.props.color !== nextProps.color) || (this.state.count !== nextState.count);
}
?
P.S. я понимаю что это перевод, вопрос скорее риторический.
+1
Думаю, что это пример, чтобы был понятен масштаб бедствия — если проверять надо, например, 10 свойств. Я надеюсь, вы не собираетесь писать такую проверку в одну строку?
0
Можно каждое условие на следующую строчку переносить. В моем мировозрении множественные if нужны, когда внутри веток делается что-то кроме возвращения boolean.
0
Если там 10 свойств, то можно сравнивать целиком:
shouldComponentUpdate(nextProps, nextState) {
return this.props !== nextProps || this.state !== nextState;
}
0
В данном случае shouldComponentUpdate будет всегда возвращать true, т.к. сравниваются ссылки на объект, а не их содержимое. Лучше тогда использовать PureComponent, react-addons-shallow-compare, shallow-compare-without-functions (сравнение объектов без учета функций), либо другие решения.
0
Код должен быть читаемым, сокращение кода это работа оптимизаторов.
0
Sign up to leave a comment.
Оптимизация производительности в React