Filed underИнженерная Практикаon•5 мин чтения

Jotai повышает управление состоянием React на следующий уровень

В разработке приложений на React управление состоянием играет важную роль, и существует множество библиотек, которые помогают достичь этой цели. Jotai - одна из...

В разработке приложений на React управление состоянием играет важную роль, и существует множество библиотек, которые помогают достичь этой цели. Jotai - одна из таких библиотек, переосмысляющая концепцию управления состоянием и предлагающая упрощенный и эффективный подход к этой задаче.

Введение в Jotai

Jotai - это минималистичная библиотека управления состоянием для React, название которой происходит от японского слова, означающего 'состояние'. Она предлагает тонкий и интуитивный подход к управлению состоянием, используя концепции атомов (atoms) и селекторов (selectors).

Установка Jotai

Перед началом использования Jotai необходимо выполнить его установку. Убедитесь, что у вас установлены Node.js и npm в вашей среде разработки. Если это не так, вы можете загрузить Node.js с официального сайта https://nodejs.org/, где также доступен npm.

В терминале перейдите в каталог вашего проекта и выполните следующую команду для установки Jotai:

npm install jotai

Если вы предпочитаете использовать Yarn, вы можете выполнить следующую команду:

yarn add jotai

Использование Jotai в вашем проекте React

После завершения установки вы можете импортировать функции atom и useAtom из Jotai для начала управления состоянием в вашем проекте React.

Определение атомов

В Jotai атом представляет собой часть состояния. Вы можете создать атом, используя функцию atom и передавая начальное состояние в качестве аргумента.

import { atom } from 'jotai'

const countAtom = atom(0) // Создание атома с начальным состоянием 0

Использование атомов

В ваших компонентах React используйте хук useAtom для доступа и изменения состояния атома. Хук useAtom возвращает массив, где первый элемент - текущее состояние, а второй элемент - функция установки, используемая для обновления состояния.

import { useAtom } from 'jotai'

function Counter() {
  const [count, setCount] = useAtom(countAtom)
  
  return (
    <div>
      <h1>Count: {count}</h1>
      <button onClick={() => setCount(count + 1)}>Увеличить</button>
    </div>
  )
}

В приведенном примере setCount - это функция, используемая для обновления состояния атома countAtom при вызове.

Это базовый пример использования Jotai для управления состоянием в приложении React. При дальнейшем изучении вы обнаружите, что Jotai предлагает более продвинутые функции, такие как производные атомы (derived atoms), семейства атомов (atom families), асинхронные атомы и многое другое, что облегчает эффективное управление состоянием.

Сравнение: Jotai vs. Redux и Recoil

В сравнении с другими популярными библиотеками, такими как Redux и Recoil, Jotai имеет несколько существенных преимуществ.

Jotai vs. Redux

Redux долгое время был предпочитаемой библиотекой для управления состоянием в крупных приложениях, но его длинный код и избыточность сделали его сложным в использовании. В отличие от этого, подход, основанный на атомах в Jotai, требует меньше кода, что улучшает его читаемость и поддерживаемость.

// Redux
const mapStateToProps = (state) => ({ count: state.count })
const mapDispatchToProps = (dispatch) => ({ increment: () => dispatch({ type: 'INCREMENT' }) })

function Counter({ count, increment }) {
  return (
    <div>
      <button onClick={increment}>+</button>
      <div>Count: {count}</div>
    </div>
  )
}

export default connect(mapStateToProps, mapDispatchToProps)(Counter)

// Jotai
const countAtom = atom(0)
const incrementAtom = atom((get) => get(countAtom) + 1)

function Counter() {
  const [count, increment] = useAtom(countAtom, incrementAtom)
  return (
    <div>
      <button onClick={increment}>+</button>
      <div>Count: {count}</div>
    </div>
  )
}

Jotai vs. Recoil

Recoil - это еще одна библиотека, основанная на атомах, для управления состоянием, которая следует подобному подходу, как Jotai. Однако Recoil требует, чтобы все приложение было обернуто в компонент RecoilRoot, в то время как Jotai не требует этого, что облегчает его интеграцию в существующие приложения.

Недостатки Jotai

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

Заключение

Jotai - это инновационное решение в области управления состоянием в React, предлагающее уникальное и эффективное решение для более плавного процесса разработки. Хотя она может не конкурировать с Redux или Recoil в плане поддержки сообщества, простота и элегантность Jotai заслуживают внимания при рассмотрении для вашего следующего проекта на React.


Полный код

// Пример полного кода с использованием Jotai
import { atom, useAtom } from 'jotai'

const countAtom = atom(0)
const incrementAtom = atom(
  (get) => get(countAtom) + 1,
  (get, set) => set(countAtom, get(countAtom) + 1)
)

function Counter() {
  const [count, increment] = useAtom(countAtom, incrementAtom)
  return (
    <div>
      <button onClick={increment}>+</button>
      <div>Count: {count}</div>
    </div>
  )
}

function App() {
  return <Counter />
}

export default App

Исследуйте Jotai и изучите его мощные функциональности для эффективного управления состоянием в ваших приложениях React. В процессе изучения вы поймете, как эта минималистичная и мощная библиотека переносит управление состоянием в React на новый уровень.


Часто задаваемые вопросы

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

  2. Можно ли использовать Jotai совместно с другими библиотеками управления состоянием, такими как Redux? Да, вы можете использовать Jotai с Redux или любой другой библиотекой управления состоянием в одном проекте.

  3. Что такое атомы в Jotai? В Jotai атомы представляют собой самые маленькие единицы состояния. Их можно читать и записывать, а также комбинировать для формирования более сложных состояний.

  4. Похож ли Jotai на Redux Toolkit? Хотя обе библиотеки стремятся упростить управление состоянием в React, их подходы отличаются. Redux Toolkit использует подход, основанный на срезах (slices), в то время как Jotai использует подход, основанный на атомах.

  5. Как Jotai обрабатывает асинхронные операции? Jotai может обрабатывать асинхронные операции, используя асинхронные атомы, обновляя состояние на основе Promise.

Назад ко всем статьямГлавная