В версии реакта 16.8.0 команда разработчиков планирует выпустить react hooks, поэтому пора бы разобраться что нас ждет.
React hooks предоставляют новые возможности для уменьшение дублирования кода. Давайте рассмотрим работу useState, useEffect, и собственных хуков в реакт.
План изучения:
Данная статья состоит из конспекта документации (первая часть) и из практической работы (вторая часть).
Пример из документации сразу же понятен всем, кто использовал в работе recompose и withState хук, для остальных — комментарий в коде.
Мотивация разработчиков React:
Решение: «хуки». Нечто, что позволит добавлять привычный функционал «классов» в stateless-компоненты (компоненты, созданные с помощью function).
По порядку о текущих хуках:
useState — это хук (а технически — это функция) которая принимает один аргумент — начальное значение, которое будет установлено в момент первой отрисовки.
В нашем случае, получается, что мы передаем 0
(ноль), который будет установлен в count
(как будто бы в this.state.count
если бы это был компонент созданный с помощью class)
Вместо тысячи объяснений «на пальцах» — пример одного и того же компонента:
Разумеется, вместо 0 вы можете передавать любое начальное значение, в том числе и объект.
Порядок вызова важен, так как таким образом реакт определяет какая часть state относится к определенному вызову useState.
Подробно про useState хук в документации.
Под эффектом понимается любое действие, которое может задеть «другие компоненты» и не может быть выполнено во время render’a. Это то, что мы привыкли называть «сайд-эффектом».
Чтобы произвести «очистку» (ранее, вы выполняли это в componentWillUnmount
) — просто верните (return) функцию из useEffect.
Напоследок еще один пример из документации, в котором указано как можно использовать несколько эффектов.
Подробно про useEffect, включая примеры с class против hooks
(перевод абзаца из документации)
Хуки — это javascript функции, однако, они налагают пару дополнительных правил:
Мы (разработчики react) выкатили плагин для линетра, чтобы автоматизировать процесс.
Подробнее про правила хуков в реакте
Кратко: предположим, есть пара компонентов, между которыми мы хотим «пошарить» (поделить) логику (собственно, для этого хуки и задумывались). Эту логику, вместо копирования в 2 компонента, мы выносим в свой хук и используем.
Пример: (не торопимся, читаем внимательно)
В итоге, мы избавились от дублирования кода в компонентах FriendStatus и FriendListItem.
Если вас заинтересовал данный подход, можете погрузиться в еще один абзац документации: Как передать информацию между хуками.
Так же вы можете ознакомиться со списком хуков.
При создании собственных хуков, название функций начинайте с use… .
Во второй части — практикум.
Сегодня будем использовать parcel и IntelliJ IDEA Community Edition. Все инструменты бесплатные. Инициализация elm проекта…
На данном вебинаре мы знакомились с языком Elm проводя параллели между Elm и Redux, поэтому…
Richard Feldman рассказывает как масштабировать Elm приложение без боли. Показаны техники: extended records, подход narrow…
В данной заметке вы найдете конспект видео по Elm, которые я посмотрел в ноябре 2019.…
Итоги года 2019 // Max Frontend Покажи мне свой гитхаб, и я скажу работал ли…
Почему стоит изучать Elm? Потому что это интересный вызов, редкие (но вкусные) вакансии и хороший…