Как сказал KuchBhi, вам нужно будет использовать метод shouldComponentUpdate
жизненного цикла.
shouldComponentUpdate
вызывается в любое время, когда новые свойства или состояние передаются компоненту, и по умолчанию возвращает true (может возвращать true только для обновленных свойств, но не на 100%). Метод принимает два параметра: nextProps
и nextState
. Затем вы можете сравнить их с this.props и this.state, чтобы решить, следует ли вам обновлять или нет.
Стандартная/типичная реализация этого метода выглядит примерно так (псевдо):
shouldComponentUpdate(nextProps, nextState) {
//Really it's a deeper equality check, not just the props/state object
return this.props !== nextProps || this.state !== nextState;
}
Что вы можете сделать в качестве альтернативы, так это немного расширить это со случаями, когда возвращается false. Вот пример из одного из моих проектов, где я хочу перерендерить только два конкретных реквизита:
shouldComponentUpdate(nextProps) {
const minUpdated = this.props.min !== nextProps.min;
const maxUpdated = this.props.max !== nextProps.max;
return minUpdated || maxUpdated;
}
Компонент также имеет реквизиты, такие как масштаб, выравнивание, ширина и т. д., но я не хочу обновлять их, когда получаю новые реквизиты, поэтому я не проверяю, не равны ли они.
По сути, вы можете просто вернуть false в этом методе и никогда не обновлять после начальной загрузки, но я бы избегал этого, поскольку это противоречит цели реагирования.
редактировать: как сказал varoons, это, вероятно, отличный сценарий для вас, чтобы использовать новый API контекста, и я настоятельно рекомендую изучить его, но также полезно знать о методах жизненного цикла компонентов.
person
Ryan - Llaver
schedule
17.12.2018
shouldComponentUpdate()
? Подробнее: reactjs.org/docs/react-component.html#shouldcomponentupdate - person iRohitBhatia   schedule 17.12.2018