Реагировать.Компонент против реакции.PureComponent
чиновник React docs указано, что "React.PureComponent ' s shouldComponentUpdate() только поверхностно сравнивает объекты", и советует против этого, если состояние"глубокое".
учитывая это, есть ли причина, по которой следует предпочесть React.PureComponent при создании компонентов React?
вопросы:
- есть ли влияние на производительность при использовании
React.Componentчто мы можем использоватьReact.PureComponent? - я думаю
shouldComponentUpdate()ofPureComponentвыполняет только поверхностные сравнения. Если это так, не может ли указанный метод использоваться для более глубоких сравнений? - "кроме того,
React.PureComponent' sshouldComponentUpdate()пропускает обновления prop для всего поддерева компонента" - означает ли это, что изменения prop игнорируются?
вопрос возник от чтения в это средне-блог, если это помогает.
1 ответ:
основная разница между
React.PureComponentиReact.ComponentиPureComponentтут неглубокое сравнение при изменении состояния. Это означает, что при сравнении скалярных значений он сравнивает их значения, но при сравнении объектов он сравнивает только ссылки. Это помогает повысить производительность приложения.вы должны пойти на
React.PureComponentкогда вы можете удовлетворить любое из указанных ниже условий.
- состояние / реквизит должен быть неизменяемым объектом
- состояние / реквизит не должны иметь иерархию
- вы должны позвонить
forceUpdateпри изменении данныхесли вы используете
React.PureComponentвы должны убедиться, что все дочерние компоненты также чисто.есть ли влияние на производительность при использовании реагируют.компонент, который мы можем подумайте о том, чтобы пойти на реакцию.Чистый компонент?
Да, это увеличит производительность вашего приложения (из-за неглубокого сравнения)
Я предполагаю, что shouldComponentUpdate() Purecomponent выполняет только поверхностные сравнения . Если это так, то не может быть использован указанный метод для более глубоких сравнений?
вы угадали правильно. Вы можете использовать его, если вы удовлетворяете любому из условий, упомянутых выше.
"Более Того, Реагировать.Purecomponent's shouldComponentUpdate () пропускает prop обновления для всего поддерева компонента" - означает ли это, что prop изменения проигнорировали?
Да, изменения опоры будут проигнорированы, если он не смог найти разницу в мелком сравнении.
Comments