RecoilJS — современная библиотека управления состоянием для React, разработанная командой Facebook. Вы можете спросить: Еще одна библиотека управления состоянием? Я использую Redux с Redux Toolkit. Зачем мне что-то еще?. Ответ прост. Для простого CRUD-приложения с Redux Toolkit вам нужно написать тонны кода с редьюсерами, действиями, дополнительными редьюсерами и т. д. С RecoilJS все просто. В этой статье я покажу вам, как создать CRUD-приложение с помощью React+RecoilJS и интегрировать его с серверной частью.

Основные понятия отдачи

Атомы

Атом является частью государства. Вы можете получить его значение и установить для него значение.

Селектор

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

Асинхронный селектор

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

Для рендеринга данных из асинхронных селекторов вам необходимо обернуть ваши компоненты React.Suspense, потому что данные могут не загружаться при запуске рендеринга:

Я рекомендую вам прочитать все документы с официального сайта https://recoiljs.org/docs/basic-tutorial/intro. Это займет около 15 минут вашего времени, документы очень легко читаются.

Получение данных

С помощью асинхронного селектора вы можете легко получать данные из серверной части. Но изменить эти данные нельзя, их нужно где-то хранить. Для таких случаев Recoil предоставляет интересный метод: передача асинхронного селектора в качестве значения атома по умолчанию.

Селектор загружает данные из API, а атом сохраняет их. Вот и все, никаких действий или мутаций, всего 9 строк кода.

Создавать

Для создания новой отрасли нам нужно отправить данные в серверную часть и добавить ответ в массив состояния отрасли. Я предпочитаю оборачивать повторно используемый код в виде хуков. Итак, давайте создадим хук, выполняющий операции модификации industriesState:

Обновлять

Тот же подход для обновлений, но вместо добавления мы заменяем обновленную отрасль в массиве на новую:

Удалить

А для удаления просто фильтруем отрасли:

Собираем все вместе

Теперь у нас есть все 4 CRUD-операции:

Заключение

Библиотеки должны упрощать работу разработчиков, и RecoilJS делает это. Пока она находится в экспериментальной стадии, но я уверен, что у этой библиотеки большое будущее.

Это все на сегодня! Если у вас есть вопросы, не стесняйтесь, пишите их в комментариях.

Увидимся в следующий раз! Сервус!