Я новичок в React и хочу знать, когда мне следует использовать Компонент React, а когда - Реагировать на PureComponent?
Составная часть:
import React, { Component } from 'react'
Чистый компонент:
import React, { PureComponent } from 'react'
Могу ли я использовать React PureComponent везде?
ИЛИ ЖЕ
безопасно ли использовать shouldComponentUpdate и проверять и возвращать ложный не требуется
Я только что прочитал статью, в которой говорится, что использование чистых компонентов на самом деле приносит больше вреда, чем пользы. они рекомендуют использовать «реагировать на обновление при изменении». Насколько это правда?
Артикул: https://hackernoon.com/react-purecomponent-considered-harmful-8155b5c1d4bc
@Tholle - это все равно PureComponents вредно?
Не обязательно вредно, но может вносить небольшие ошибки, как объяснено здесь. Лично я бы просто использовал PureComponent, когда в моем приложении есть конкретный случай, когда он может понадобиться, а не использовать его по умолчанию.
@tholle Я думаю, что лучше, чтобы компоненты контейнера имели PureComponents, а не компоненты более низкого уровня, потому что, если свойства и состояния не изменились, компоненты более низкого уровня в любом случае не будут достигнуты.
Если вы еще этого не сделали, ознакомьтесь с производительностью React. Если вы будете осторожны со своими данными, React уже работает практически во всех случаях, и вам почти никогда не понадобится React.PureComponent.
@maccambridge насчет сложных сценариев, не думаете ли вы, что использование PureComponents немного повысит производительность.
чистый компонент делает только поверхностное сравнение. Поэтому для глубоких мутаций лучше использовать shouldComponentUpdate ().





Can I use React PureComponent everywhere?
Да, вы можете, но все больше и больше пытаетесь использовать Функциональный компонент. В случае компонента Class, сохраните его маленьким и расширьте до PureComponent или Component, если вы хотите реализовать свой собственный shouldComponentUpdate, посоветуйте сделать это, когда на минимальных несложных (вложенный глубокий массив или / и объект) реквизиты меняют потребности вашего компонента обновить.
Is it safe to use shouldComponentUpdate?
Да, это так, если вы знаете, что делаете, а это означает, что любой недостаток в вашей реализации может привести к проблемам с производительностью, таким как повторный рендеринг ненужного компонента только потому, что ваша реализация shouldComponentUpdate вернула истину или хуже того, что ваш компонент не выполняет повторную визуализацию на определенные реквизиты меняются, поскольку ваш shouldComponentUpdate возвращает false из-за некоторого сбоя.
Упомянутый средний пост пытается продать пакет response-update-if-changed, который кажется неплохим вариантом для начала, но когда вы понимаете, что
the real problem statement is all about performance optimization (refer https://reactjs.org/docs/optimizing-performance.html)
Как избежать ненужных проверок для определения возможности обновления компонента и избежать нежелательного повторного рендеринга?
Использование последнего метода, который полностью посвящен Расширенные шаблоны реакции, - лучший способ оптимизировать производительность и кодовую базу. Чтобы лучше понять это, обратитесь к Тупые и умные компоненты и Презентационные и контейнерные компоненты.
Спасибо за подробный ответ.
да, конечно, почему бы и нет, в конце концов, это действительно очень вопрос.
import React, { PureComponent } from 'react'
export default Class PureComponent extends React.PureComponent{
}
import React, { Component } from 'react'
export default Class NormalComponent extends React.Component{
}
PureComponent не имеет методов жизненного цикла
PureComponent check shallow comparison and re-render when Needed
Use Pure Component when used when primitive data types int string boolean etc,
Примечание:-
React.PureComponentреализуетshouldComponentUpdateс мелким сравнением свойств и состояний. Это инструмент оптимизации, который вы можете использовать, если он вам действительно нужен.If your React component’s render() function renders the same result given the same props and state, you can use React.PureComponent for a performance boost in some cases.