Ленивые компоненты и предохранители
При загрузке ленивого компонента может произойти ошибка (сбой сети), поэтому имеет смысл обернуть его в предохранитель.
#документация #оптимизация #обработкаошибок #предохранители #ленивыекомпоненты
При загрузке ленивого компонента может произойти ошибка (сбой сети), поэтому имеет смысл обернуть его в предохранитель.
#документация #оптимизация #обработкаошибок #предохранители #ленивыекомпоненты
shouldComponentUpdate
Метод жизненного цикла компонента, который вызывается при любом изменении пропсов или состояния ПЕРЕД рендером. Фактически определяет, нужно ли перерисовывать компонент. Поведение по умолчанию - перерендер производится при любом изменении.
Входные параметры
👉 nextProps - объект перехваченной ошибки
👉 nextState - объект с информацией о компоненте, в котором произошла ошибка
Выходные параметры
👉 логическое значение (true/false), которое указывает, нужен ли перерендер
Особенности работы
👉 Если shouldComponentUpdate() возвращает false, то UNSAFE_componentWillUpdate(), render() и componentDidUpdate() не будут вызваны.
👉 Возврат false не предотвращает повторный рендер дочерних компонентов при изменении их состояния.
👉 Не рекомендуется делать глубокое сравнение или использовать JSON.stringify() в shouldComponentUpdate(). Это неэффективно и плохо влияет на производительность.
👉 В будущем React может рассматривать shouldComponentUpdate() как подсказку, а не строгое указание.
Типичные случаи использования
👉 Внутри метода можно сравнить новые пропсы (nextProps) и новое состояние (nextState) с текущими (this.props, this.state). Если изменения не должны вызывать перерендер (например, они не влияют на интерфейс), нужно вернуть из метода false.
Пример
https://codepen.io/furrycat/pen/jOBJmGq?editors=0010
Метод shouldComponentUpdate() разрешает перерендер только при изменении поля this.state.clicks. Поэтому при изменение this.state.counter перендер не происходит. Однако все изменения фиксируются.
#компоненты #жизненныйциклкомпонента #документация #примерыкода
Метод жизненного цикла компонента, который вызывается при любом изменении пропсов или состояния ПЕРЕД рендером. Фактически определяет, нужно ли перерисовывать компонент. Поведение по умолчанию - перерендер производится при любом изменении.
Входные параметры
👉 nextProps - объект перехваченной ошибки
👉 nextState - объект с информацией о компоненте, в котором произошла ошибка
Выходные параметры
👉 логическое значение (true/false), которое указывает, нужен ли перерендер
Особенности работы
👉 Если shouldComponentUpdate() возвращает false, то UNSAFE_componentWillUpdate(), render() и componentDidUpdate() не будут вызваны.
👉 Возврат false не предотвращает повторный рендер дочерних компонентов при изменении их состояния.
👉 Не рекомендуется делать глубокое сравнение или использовать JSON.stringify() в shouldComponentUpdate(). Это неэффективно и плохо влияет на производительность.
👉 В будущем React может рассматривать shouldComponentUpdate() как подсказку, а не строгое указание.
Типичные случаи использования
👉 Внутри метода можно сравнить новые пропсы (nextProps) и новое состояние (nextState) с текущими (this.props, this.state). Если изменения не должны вызывать перерендер (например, они не влияют на интерфейс), нужно вернуть из метода false.
Пример
https://codepen.io/furrycat/pen/jOBJmGq?editors=0010
Метод shouldComponentUpdate() разрешает перерендер только при изменении поля this.state.clicks. Поэтому при изменение this.state.counter перендер не происходит. Однако все изменения фиксируются.
#компоненты #жизненныйциклкомпонента #документация #примерыкода
Telegram
React Junior
componentDidUpdate
Метод вызывается после обновления компонента. Не вызывается при первом рендере.
Входные параметры
👉 prevProps
👉 prevState
👉 snapshot - результат работы метода getSnapshotBeforeUpdate, если он реалиован
Особенности работы
👉 Вызов setState()…
Метод вызывается после обновления компонента. Не вызывается при первом рендере.
Входные параметры
👉 prevProps
👉 prevState
👉 snapshot - результат работы метода getSnapshotBeforeUpdate, если он реалиован
Особенности работы
👉 Вызов setState()…
PureComponent
React.PureComponent это немного прокачанный React.Component, имеющий базовую реализацию метода shouldComponentUpdate().
При каждом изменении PureComponent проводит поверхностное сравнение пропсов и состояния. Если видимых изменений нет, перерендер не происходит.
#компоненты #документация #оптимизация #purecomponent
React.PureComponent это немного прокачанный React.Component, имеющий базовую реализацию метода shouldComponentUpdate().
При каждом изменении PureComponent проводит поверхностное сравнение пропсов и состояния. Если видимых изменений нет, перерендер не происходит.
#компоненты #документация #оптимизация #purecomponent
Telegram
React Junior
shouldComponentUpdate
Метод жизненного цикла компонента, который вызывается при любом изменении пропсов или состояния ПЕРЕД рендером. Фактически определяет, нужно ли перерисовывать компонент. Поведение по умолчанию - перерендер производится при любом изменении.…
Метод жизненного цикла компонента, который вызывается при любом изменении пропсов или состояния ПЕРЕД рендером. Фактически определяет, нужно ли перерисовывать компонент. Поведение по умолчанию - перерендер производится при любом изменении.…
Profiler
React предоставляет встроенные возможности профилирования приложения - с помощью компонента Profiler.
https://codesandbox.io/s/profiler-react-junior-cbidb?file=/src/App.js
Profiler принимает два пропса - id и функцию onRender. onRender вызывается при каждом рендере дочернего дерева и принимает множество аргументов - показателей производительности.
Подробнее об API компонента Profiler в документации: https://ru.reactjs.org/docs/profiler.html
Примечание
Функциональность Profiler доступна только в режиме разработки.
#оптимизация #profiler #документация #примерыкода
React предоставляет встроенные возможности профилирования приложения - с помощью компонента Profiler.
https://codesandbox.io/s/profiler-react-junior-cbidb?file=/src/App.js
Profiler принимает два пропса - id и функцию onRender. onRender вызывается при каждом рендере дочернего дерева и принимает множество аргументов - показателей производительности.
Подробнее об API компонента Profiler в документации: https://ru.reactjs.org/docs/profiler.html
Примечание
Функциональность Profiler доступна только в режиме разработки.
#оптимизация #profiler #документация #примерыкода
CodeSandbox
Profiler. React Junior - CodeSandbox
Profiler. React Junior by furrycat.web using react, react-dom, react-scripts
Оптимизация производительности
Документация утвержает, что React сам по себе довольно умный и производительный. Однако мы можем еще сильнее его ускорить с помощью некоторых действий.
👉 Использование production-сборки
Советы по настройке сборки для разных инструментов есть в документации: https://ru.reactjs.org/docs/optimizing-performance.html
👉 Анализ производительности с помощью Profiler
Краткий обзор компонента Profiler был в предыдущем посте.
👉 Виртуализация длинных списков
Использование метода "оконного доступа" предполагает, что все элементы списка не рендерятся сразу же. На экран выводятся только те элементы, которые пользователь может видеть в данный момент. Это улучшает производительность.
👉 Избежание ненужных согласований
Не каждое изменение пропсов или состояния требует рендерить компонент заново. Чтобы избежать ненужных перерисовок, используйте метод shouldComponentUpdate или наследуйте компонент от PureComponent, который предоставляет базовую реализацию этого метода.
#документация #оптимизация #profiler #purecomponent
Документация утвержает, что React сам по себе довольно умный и производительный. Однако мы можем еще сильнее его ускорить с помощью некоторых действий.
👉 Использование production-сборки
Советы по настройке сборки для разных инструментов есть в документации: https://ru.reactjs.org/docs/optimizing-performance.html
👉 Анализ производительности с помощью Profiler
Краткий обзор компонента Profiler был в предыдущем посте.
👉 Виртуализация длинных списков
Использование метода "оконного доступа" предполагает, что все элементы списка не рендерятся сразу же. На экран выводятся только те элементы, которые пользователь может видеть в данный момент. Это улучшает производительность.
👉 Избежание ненужных согласований
Не каждое изменение пропсов или состояния требует рендерить компонент заново. Чтобы избежать ненужных перерисовок, используйте метод shouldComponentUpdate или наследуйте компонент от PureComponent, который предоставляет базовую реализацию этого метода.
#документация #оптимизация #profiler #purecomponent
ru.legacy.reactjs.org
Оптимизация производительности – React
JavaScript-библиотека для создания пользовательских интерфейсов
PureComponent и иммутабельность данных
Мы уже говорили о том, что класс PureComponent предоставляет базовую реализацию метода shouldComponentUpdate.
Важно понимать, что в этой реализации проводится поверхностное сравнение пропсов и полей состояния. Это значит, что если в состоянии у вас был массив, и вы добавили в него новый элемент с помощью метода push, сам массив остался тем же самым. Следовательно, PureComponent посчитает, что изменений не было, и не обновит представление.
Чтобы этого не произошло, используйте иммутабельные структуры данных. Например, вместо метода push для добавления элемента в массив следует использовать concat или синтаксис расширения массивов (оператор ...). Результатом этих операций будет новый массив, и PureComponent заметит изменение.
#ошибки #purecomponent #оптимизация #документация
Мы уже говорили о том, что класс PureComponent предоставляет базовую реализацию метода shouldComponentUpdate.
Важно понимать, что в этой реализации проводится поверхностное сравнение пропсов и полей состояния. Это значит, что если в состоянии у вас был массив, и вы добавили в него новый элемент с помощью метода push, сам массив остался тем же самым. Следовательно, PureComponent посчитает, что изменений не было, и не обновит представление.
Чтобы этого не произошло, используйте иммутабельные структуры данных. Например, вместо метода push для добавления элемента в массив следует использовать concat или синтаксис расширения массивов (оператор ...). Результатом этих операций будет новый массив, и PureComponent заметит изменение.
#ошибки #purecomponent #оптимизация #документация
Telegram
React Junior
PureComponent
React.PureComponent это немного прокачанный React.Component, имеющий базовую реализацию метода shouldComponentUpdate().
При каждом изменении PureComponent проводит поверхностное сравнение пропсов и состояния. Если видимых изменений нет, перерендер…
React.PureComponent это немного прокачанный React.Component, имеющий базовую реализацию метода shouldComponentUpdate().
При каждом изменении PureComponent проводит поверхностное сравнение пропсов и состояния. Если видимых изменений нет, перерендер…
Проверка типов
Часто ошибки в приложениях возникают из-за несоответствия ожидаемых и приходящих в рантайме типов данных. Чтобы такие ошибки отлавливать можно использовать специальные инструменты для статической типизации (Flow, TypeScript).
В документации есть отдельный раздел про их подключение: https://ru.reactjs.org/docs/static-type-checking.html
Но есть и более нативное решение - PropTypes, которое хорошо подойдет для небольших проектов.
Раньше библиотека PropTypes поставлялась вместе с React, но теперь она вынесена в отдельный пакет prop-types, который нужно подключить в приложение.
https://codesandbox.io/s/proptypes-react-junior-sze88
Чтобы использовать проверку типов, необходимо объявить для React-компонента статическое свойство propTypes - объект, в котором перечислены правила валидации для разных пропсов.
Если, например, вы укажете, что проп name должен иметь тип PropTypes.string, а придет число, вы увидите ошибку.
Подробнее о PropTypes, различных валидаторах и способах проверки типов для функциональных компонентах в документации: https://ru.reactjs.org/docs/typechecking-with-proptypes.html
Примечание
Функциональность PropTypes доступна только в режиме разработки.
#документация #проверкатипов #примерыкода
Часто ошибки в приложениях возникают из-за несоответствия ожидаемых и приходящих в рантайме типов данных. Чтобы такие ошибки отлавливать можно использовать специальные инструменты для статической типизации (Flow, TypeScript).
В документации есть отдельный раздел про их подключение: https://ru.reactjs.org/docs/static-type-checking.html
Но есть и более нативное решение - PropTypes, которое хорошо подойдет для небольших проектов.
Раньше библиотека PropTypes поставлялась вместе с React, но теперь она вынесена в отдельный пакет prop-types, который нужно подключить в приложение.
https://codesandbox.io/s/proptypes-react-junior-sze88
Чтобы использовать проверку типов, необходимо объявить для React-компонента статическое свойство propTypes - объект, в котором перечислены правила валидации для разных пропсов.
Если, например, вы укажете, что проп name должен иметь тип PropTypes.string, а придет число, вы увидите ошибку.
Подробнее о PropTypes, различных валидаторах и способах проверки типов для функциональных компонентах в документации: https://ru.reactjs.org/docs/typechecking-with-proptypes.html
Примечание
Функциональность PropTypes доступна только в режиме разработки.
#документация #проверкатипов #примерыкода
Строгий режим
Строгий режим в React активирует дополнительные проверки и предупреждения. Чтобы его включить, используйте компонет React.StrictMode. Действие строгого режима будет распространяться на всех его потомков.
За чем следит строгий режим?
👉 Использование небезопасных методов жизненного цикла.
👉 Использование устаревшего API.
👉 Неожиданные побочные эффекты на этапе рендеринга.
Подробнее о проверках в документации (рус.): https://ru.reactjs.org/docs/strict-mode.html
Примечание
Функциональность StrictMode доступна только в режиме разработки.
#документация #строгийрежим #началоработы
Строгий режим в React активирует дополнительные проверки и предупреждения. Чтобы его включить, используйте компонет React.StrictMode. Действие строгого режима будет распространяться на всех его потомков.
За чем следит строгий режим?
👉 Использование небезопасных методов жизненного цикла.
👉 Использование устаревшего API.
👉 Неожиданные побочные эффекты на этапе рендеринга.
Подробнее о проверках в документации (рус.): https://ru.reactjs.org/docs/strict-mode.html
Примечание
Функциональность StrictMode доступна только в режиме разработки.
#документация #строгийрежим #началоработы
ru.legacy.reactjs.org
Строгий режим – React
JavaScript-библиотека для создания пользовательских интерфейсов
Доступность контента
Обеспечение доступности контента не является необходимой частью обучения React, однако в современном вебе это очень важная тема.
В документации есть отдельная большая статья по обеспечению доступности в React-приложениях (рус.): https://ru.reactjs.org/docs/accessibility.html
Самые важные моменты:
- aria-атрибуты в JSX указываются как есть (с дефисом)
- атрибут for у элемента label нужно указывать как htmlFor
- для управления фокусом на странице используйте рефы
#документация #доступность
Обеспечение доступности контента не является необходимой частью обучения React, однако в современном вебе это очень важная тема.
В документации есть отдельная большая статья по обеспечению доступности в React-приложениях (рус.): https://ru.reactjs.org/docs/accessibility.html
Самые важные моменты:
- aria-атрибуты в JSX указываются как есть (с дефисом)
- атрибут for у элемента label нужно указывать как htmlFor
- для управления фокусом на странице используйте рефы
#документация #доступность
ru.legacy.reactjs.org
Доступность контента – React
JavaScript-библиотека для создания пользовательских интерфейсов
React.memo
React.memo - это компонент высшего порядка, который предоставляет сама библиотека.
Его работа похожа на работу метода shouldComponentUpdate, но сравниваются только пропсы (без учета состояния).
Метод React.memo принимает два аргумента: компонент, который нужно обернуть, и функцию areEqual, которая будет сравнивать новый набор пропсов с предыдущим. Функцию сравнения можно не передавать, тогда пропсы будут сравниваться поверхностно (примерно как в PureComponent).
Важно
👉 Функция areEqual должна возвращать true, если пропсы равны, и false, если не равны. (Метод shouldComponentUpdate работает наоборот, но логика кажется понятной по названиям методов).
#документация #hoc #оптимизация
React.memo - это компонент высшего порядка, который предоставляет сама библиотека.
Его работа похожа на работу метода shouldComponentUpdate, но сравниваются только пропсы (без учета состояния).
Метод React.memo принимает два аргумента: компонент, который нужно обернуть, и функцию areEqual, которая будет сравнивать новый набор пропсов с предыдущим. Функцию сравнения можно не передавать, тогда пропсы будут сравниваться поверхностно (примерно как в PureComponent).
Важно
👉 Функция areEqual должна возвращать true, если пропсы равны, и false, если не равны. (Метод shouldComponentUpdate работает наоборот, но логика кажется понятной по названиям методов).
#документация #hoc #оптимизация
Telegram
React Junior
Компоненты высшего порядка
Компонента высшего порядка (High order component, HOC) - это паттерн для выделения повторяющейся логики и ее переиспользования. По сути это не компонент, а функция, которая возвращает компонент.
Компоненты высшего порядка не…
Компонента высшего порядка (High order component, HOC) - это паттерн для выделения повторяющейся логики и ее переиспользования. По сути это не компонент, а функция, которая возвращает компонент.
Компоненты высшего порядка не…
render
Обязательный метод классового компонента, который определяет его представление.
Выходные параметры
👉 Элемент React
👉 Фрагмент React
👉 Портал
👉 Строки и числа
👉 Булево значение или null
Особенности работы
👉 Имеет доступ к пропсам (this.props) и состоянию (this.state) компонента.
👉 Метод render должен быть чистой функцией.
👉 Главная задача метода - сформировать представление документа. Всю логику по возможности следует вынести в другие методы экземпляра компонента. Также следует избегать создания объектов или функций в этом методе, так как при каждом перерендере они будут создаваться заново.
👉 Метод render не вызывается, если метод shouldComponentUpdate вернет false.
#компоненты #жизненныйциклкомпонента #документация #примерыкода
Обязательный метод классового компонента, который определяет его представление.
Выходные параметры
👉 Элемент React
👉 Фрагмент React
👉 Портал
👉 Строки и числа
👉 Булево значение или null
Особенности работы
👉 Имеет доступ к пропсам (this.props) и состоянию (this.state) компонента.
👉 Метод render должен быть чистой функцией.
👉 Главная задача метода - сформировать представление документа. Всю логику по возможности следует вынести в другие методы экземпляра компонента. Также следует избегать создания объектов или функций в этом методе, так как при каждом перерендере они будут создаваться заново.
👉 Метод render не вызывается, если метод shouldComponentUpdate вернет false.
#компоненты #жизненныйциклкомпонента #документация #примерыкода
Telegram
React Junior
shouldComponentUpdate
Метод жизненного цикла компонента, который вызывается при любом изменении пропсов или состояния ПЕРЕД рендером. Фактически определяет, нужно ли перерисовывать компонент. Поведение по умолчанию - перерендер производится при любом изменении.…
Метод жизненного цикла компонента, который вызывается при любом изменении пропсов или состояния ПЕРЕД рендером. Фактически определяет, нужно ли перерисовывать компонент. Поведение по умолчанию - перерендер производится при любом изменении.…
componentDidMount
Метод вызывается сразу после монтирования компонента в DOM.
Особенности работы
👉 В методе допустимо вызывать setState(), что сразу же вызовет дополнительный рендер. При этом промежуточное состояние пользователь не увидит. Это может быть полезно для первичного взаимодействия с DOM-элементами, например, для измерения их размера. Однако используйте этот подход с осторожностью.
Типичные случаи использования
👉 Действия с DOM-узлами компонента.
👉 Выполнение сетевых запросов.
👉 Настройка подписок. Не забудьте отписаться от них в методе componentWillUnmount.
#компоненты #жизненныйциклкомпонента #документация #примерыкода
Метод вызывается сразу после монтирования компонента в DOM.
Особенности работы
👉 В методе допустимо вызывать setState(), что сразу же вызовет дополнительный рендер. При этом промежуточное состояние пользователь не увидит. Это может быть полезно для первичного взаимодействия с DOM-элементами, например, для измерения их размера. Однако используйте этот подход с осторожностью.
Типичные случаи использования
👉 Действия с DOM-узлами компонента.
👉 Выполнение сетевых запросов.
👉 Настройка подписок. Не забудьте отписаться от них в методе componentWillUnmount.
#компоненты #жизненныйциклкомпонента #документация #примерыкода
Telegram
React Junior
componentWillUnmount
Метод вызывается перед размонтированием компонента из DOM и его удалением.
Особенности работы
👉 Не следует вызывать setState в методе, так как повторного рендера не будет.
Типичные случаи использования
👉 Отмена подписок.
👉 Отмена…
Метод вызывается перед размонтированием компонента из DOM и его удалением.
Особенности работы
👉 Не следует вызывать setState в методе, так как повторного рендера не будет.
Типичные случаи использования
👉 Отмена подписок.
👉 Отмена…
componentWillUnmount
Метод вызывается перед размонтированием компонента из DOM и его удалением.
Особенности работы
👉 Не следует вызывать setState в методе, так как повторного рендера не будет.
Типичные случаи использования
👉 Отмена подписок.
👉 Отмена сетевых запросов.
👉 Сброс таймеров.
#компоненты #жизненныйциклкомпонента #документация #примерыкода
Метод вызывается перед размонтированием компонента из DOM и его удалением.
Особенности работы
👉 Не следует вызывать setState в методе, так как повторного рендера не будет.
Типичные случаи использования
👉 Отмена подписок.
👉 Отмена сетевых запросов.
👉 Сброс таймеров.
#компоненты #жизненныйциклкомпонента #документация #примерыкода
constructor
Входные параметры
👉 props - пропсы компонента
Особенности работы
👉 Метод не является обязательным, вы можете не определять его, если не используете состояние или не привязываете методы.
👉 При реализации метода не забывайте про вызов super(props) с передачей пропсов.
Типичные случаи использования
👉 Инициализация внутреннего состояния (this.state). Состояние инициализируется простым присваиванием объекта состояния. Не вызывайте здесь метод setState().
👉 Привязка обработчиков событий к экземпляру компонента.
👉 Не следует вызывать побочные эффекты в конструкторе или подписываться на события. Для этого используйте метод componentDidMount.
👉 В конструкторе недоступна DOM-структура компонента. Для работы с ней используйте метод componentDidMount.
#компоненты #жизненныйциклкомпонента #документация #примерыкода
Входные параметры
👉 props - пропсы компонента
Особенности работы
👉 Метод не является обязательным, вы можете не определять его, если не используете состояние или не привязываете методы.
👉 При реализации метода не забывайте про вызов super(props) с передачей пропсов.
Типичные случаи использования
👉 Инициализация внутреннего состояния (this.state). Состояние инициализируется простым присваиванием объекта состояния. Не вызывайте здесь метод setState().
👉 Привязка обработчиков событий к экземпляру компонента.
👉 Не следует вызывать побочные эффекты в конструкторе или подписываться на события. Для этого используйте метод componentDidMount.
👉 В конструкторе недоступна DOM-структура компонента. Для работы с ней используйте метод componentDidMount.
#компоненты #жизненныйциклкомпонента #документация #примерыкода
Telegram
React Junior
Состояние
Сейчас мы знаем только один путь вывести что-то на страницу с помощью React - ReactDOM.render. Например, если вы захотите сделать часы/таймер/секундомер, то придется каждую секунду рендерить разметку заново вручную. Это не совсем то, чего мы ждем…
Сейчас мы знаем только один путь вывести что-то на страницу с помощью React - ReactDOM.render. Например, если вы захотите сделать часы/таймер/секундомер, то придется каждую секунду рендерить разметку заново вручную. Это не совсем то, чего мы ждем…
componentDidUpdate
Метод вызывается после обновления компонента. Не вызывается при первом рендере.
Входные параметры
👉 prevProps
👉 prevState
👉 snapshot - результат работы метода getSnapshotBeforeUpdate, если он реалиован
Особенности работы
👉 Вызов setState() внутри метода componentDidUpdate() приведет к бесконечному циклу рендера. Поэтому его необходимо оборачивать в условие или вообще избегать.
👉 Метод componentDidUpdate не вызывается, если метод shouldComponentUpdate вернет false.
Типичные случаи использования
👉 Работа с обновленным DOM.
👉 Сравнение текущих пропсов с предыдущими.
👉 Выполнение сетевых запросов.
#компоненты #жизненныйциклкомпонента #документация #примерыкода
Метод вызывается после обновления компонента. Не вызывается при первом рендере.
Входные параметры
👉 prevProps
👉 prevState
👉 snapshot - результат работы метода getSnapshotBeforeUpdate, если он реалиован
Особенности работы
👉 Вызов setState() внутри метода componentDidUpdate() приведет к бесконечному циклу рендера. Поэтому его необходимо оборачивать в условие или вообще избегать.
👉 Метод componentDidUpdate не вызывается, если метод shouldComponentUpdate вернет false.
Типичные случаи использования
👉 Работа с обновленным DOM.
👉 Сравнение текущих пропсов с предыдущими.
👉 Выполнение сетевых запросов.
#компоненты #жизненныйциклкомпонента #документация #примерыкода
Telegram
React Junior
getSnapshotBeforeUpdate
Метод вызывается прямо перед этапом фиксации.
Входные параметры
👉 prevProps
👉 prevState
Типичные случаи использования
👉 Работа с DOM до его обновления (например, сохранение положения прокрутки).
👉 Любое значение, которое вернет…
Метод вызывается прямо перед этапом фиксации.
Входные параметры
👉 prevProps
👉 prevState
Типичные случаи использования
👉 Работа с DOM до его обновления (например, сохранение положения прокрутки).
👉 Любое значение, которое вернет…
getSnapshotBeforeUpdate
Метод вызывается прямо перед этапом фиксации.
Входные параметры
👉 prevProps
👉 prevState
Типичные случаи использования
👉 Работа с DOM до его обновления (например, сохранение положения прокрутки).
👉 Любое значение, которое вернет этот метод, будет передано в componentDidUpdate.
#компоненты #жизненныйциклкомпонента #документация #примерыкода
Метод вызывается прямо перед этапом фиксации.
Входные параметры
👉 prevProps
👉 prevState
Типичные случаи использования
👉 Работа с DOM до его обновления (например, сохранение положения прокрутки).
👉 Любое значение, которое вернет этот метод, будет передано в componentDidUpdate.
#компоненты #жизненныйциклкомпонента #документация #примерыкода
Telegram
React Junior
componentDidUpdate
Метод вызывается после обновления компонента. Не вызывается при первом рендере.
Входные параметры
👉 prevProps
👉 prevState
👉 snapshot - результат работы метода getSnapshotBeforeUpdate, если он реалиован
Особенности работы
👉 Вызов setState()…
Метод вызывается после обновления компонента. Не вызывается при первом рендере.
Входные параметры
👉 prevProps
👉 prevState
👉 snapshot - результат работы метода getSnapshotBeforeUpdate, если он реалиован
Особенности работы
👉 Вызов setState()…
static getDerivedStateFromProps
Статический метод класса компонента, вызывается перед вызовом render (и при начальном монтировании, и при обновлениях).
Входные параметры
👉 props
👉 state
Выходные параметры
👉 Объект для обновления состояния.
👉 Или null, если обновлять состояние не требуется.
Особенности работы
👉 Является статическим методом и не имеет доступа к экземпляру компонента.
Типичные случаи использования
👉 Применяется если состояние зависит от изменений в пропсах. Обычно может быть заменен другими методами.
#компоненты #жизненныйциклкомпонента #документация #примерыкода
Статический метод класса компонента, вызывается перед вызовом render (и при начальном монтировании, и при обновлениях).
Входные параметры
👉 props
👉 state
Выходные параметры
👉 Объект для обновления состояния.
👉 Или null, если обновлять состояние не требуется.
Особенности работы
👉 Является статическим методом и не имеет доступа к экземпляру компонента.
Типичные случаи использования
👉 Применяется если состояние зависит от изменений в пропсах. Обычно может быть заменен другими методами.
#компоненты #жизненныйциклкомпонента #документация #примерыкода
setState
Мы уже вовсю пользуемся методом экземпляра компонента setState, но до его формального описания в документации добрались только сейчас 🙂
setState принимает изменения состояния и добавляет их в очередь изменений. Эти изменения приводят к обновлению интерфейса (перерендеру) компонента.
Входные параметры
👉 объект нового состояния или функция-коллбэк для обновления состояния, которая принимает аргументы state и props (текущее состояние и пропсы);
👉 callback - коллбэк, который будет вызыван после выполнения setState и повторного рендера компонента. Обычно вместо него используется метод жизненного цикла componentDidUpdate.
setState работает асинхронно, несколько запросов могут объединяться в один. Это может привести к ошибкам, с чем мы уже сталкивались. Если новое состояние зависит от предыдущего состояния, используйте вариант setState с функцией-коллбэком.
Предыдущий пост: setState() - что нужно знать.
#состояние #компоненты #документация
Мы уже вовсю пользуемся методом экземпляра компонента setState, но до его формального описания в документации добрались только сейчас 🙂
setState принимает изменения состояния и добавляет их в очередь изменений. Эти изменения приводят к обновлению интерфейса (перерендеру) компонента.
Входные параметры
👉 объект нового состояния или функция-коллбэк для обновления состояния, которая принимает аргументы state и props (текущее состояние и пропсы);
👉 callback - коллбэк, который будет вызыван после выполнения setState и повторного рендера компонента. Обычно вместо него используется метод жизненного цикла componentDidUpdate.
setState работает асинхронно, несколько запросов могут объединяться в один. Это может привести к ошибкам, с чем мы уже сталкивались. Если новое состояние зависит от предыдущего состояния, используйте вариант setState с функцией-коллбэком.
Предыдущий пост: setState() - что нужно знать.
#состояние #компоненты #документация
Telegram
React Junior
componentDidUpdate
Метод вызывается после обновления компонента. Не вызывается при первом рендере.
Входные параметры
👉 prevProps
👉 prevState
👉 snapshot - результат работы метода getSnapshotBeforeUpdate, если он реалиован
Особенности работы
👉 Вызов setState()…
Метод вызывается после обновления компонента. Не вызывается при первом рендере.
Входные параметры
👉 prevProps
👉 prevState
👉 snapshot - результат работы метода getSnapshotBeforeUpdate, если он реалиован
Особенности работы
👉 Вызов setState()…
forceUpdate()
Метод экземпляра компонента, который форсированно вызывает метод render(), пропуская shouldComponentUpdate().
Входные параметры
👉 callback
Типичные случаи использования
👉 Необходимость перерендерить компонент без привязки к изменению пропсов или состояния (звучит нелогично, лучше не использовать).
#документация #компоненты
Метод экземпляра компонента, который форсированно вызывает метод render(), пропуская shouldComponentUpdate().
Входные параметры
👉 callback
Типичные случаи использования
👉 Необходимость перерендерить компонент без привязки к изменению пропсов или состояния (звучит нелогично, лучше не использовать).
#документация #компоненты
Telegram
React Junior
render
Обязательный метод классового компонента, который определяет его представление.
Выходные параметры
👉 Элемент React
👉 Фрагмент React
👉 Портал
👉 Строки и числа
👉 Булево значение или null
Особенности работы
👉 Имеет доступ к пропсам (this.props)…
Обязательный метод классового компонента, который определяет его представление.
Выходные параметры
👉 Элемент React
👉 Фрагмент React
👉 Портал
👉 Строки и числа
👉 Булево значение или null
Особенности работы
👉 Имеет доступ к пропсам (this.props)…
Значения пропсов по умолчанию
Для класса компонента можно определить статическое свойство defaultProps которое позволяет установить дефолтные значения пропсов.
Это должен быть объект, в котором ключами являются имена пропсов.
Эти значения будут использоваться, если соответствующий проп не передан или равен undefined.
#документация #компоненты
Для класса компонента можно определить статическое свойство defaultProps которое позволяет установить дефолтные значения пропсов.
Это должен быть объект, в котором ключами являются имена пропсов.
Эти значения будут использоваться, если соответствующий проп не передан или равен undefined.
#документация #компоненты