2016-03-17 2 views
2

Реагировать в разделах Advance performance about about shouldComponentUpdate.React Redux: не требуется. ComponentUpdate, аналогичный угловым наблюдателям.

Это позволяет нам предотвратить визуализацию компонентов при возврате false.

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

Так что мой запрос не то же самое, что угловые наблюдатели делают автоматически. Цикл дайджеста проходит через всех наблюдателей и сравнивает выражения.

+0

Я не согласен с тем, что это то же самое, и я могу написать несколько строк о том, почему. Но даже если это то же самое, почему вы спрашиваете? Если они похожи, приводит ли это к другому выводу? –

+0

В случае, если они одинаковы, тогда несколько наблюдателей были ответственны за замедление углового применения. Будет ли использование нескольких shoulComponentUpdate иметь какое-либо влияние на производительность. – user1948585

+0

Ну, это не работает так же, как реагировать, я предлагаю вам прочитать о том, что вызывает рендеринг в реакции и о жизненном цикле компонентов, и вы получите лучшее представление о том, почему это не то же самое. –

ответ

1

Что касается Redux (или любой подобной потоку реализации), то они, безусловно, не равны.

Прежде всего, цикл $ digest применяется для двусторонней привязки данных, в то время как в React это обычно неодобрительно. Вместо этого, как правило, поддерживается однонаправленный поток данных, также известный как парадигма потока (Redux, по большей части, следует этой парадигме).

Во-вторых, когда вы используете Redux, ваше состояние изменяется в магазине, становится неизменным. Из-за этого не требуется «грязной проверки» для значений, потому что всякий раз, когда значение изменяется, изменяется «целое» значение (его ссылка). Следовательно, React должен сравнивать только по ссылке и не должен фактически сравнивать все, на что ссылаются.

Кроме того, при использовании Redux с react-redux вам, вероятно, не придется реализовывать shouldComponentUpdate. response-redux делает эту проверку ссылок для вас, используя «мелкое сравнение» (см. https://facebook.github.io/react/docs/shallow-compare.html). Если вы обнаружите, что вам по-прежнему не нужны лишние повторители, это, вероятно, связано с созданием мутаций в состоянии при отображении состояния в реквизитах. Чтобы решить эту проблему, вы можете использовать что-то вроде reselect.

+0

Спасибо за подробное объяснение. – user1948585