Что такое Redux Toolkit

Ответ

Redux Toolkit — это официальный набор инструментов для эффективной работы с Redux. Он упрощает настройку хранилища, уменьшает количество шаблонного кода и включает полезные утилиты.

Ключевые возможности:

  • configureStore(): автоматически настраивает DevTools и middleware (например, Redux Thunk).
  • createSlice(): генерирует редьюсеры и экшены из одного объекта, избавляя от ручного написания констант.
  • createAsyncThunk(): упрощает работу с асинхронными операциями.
  • Встроенная поддержка Immer для мутабельного обновления состояния.

Пример:

import { createSlice, configureStore } from '@reduxjs/toolkit';

const counterSlice = createSlice({
  name: 'counter',
  initialState: 0,
  reducers: {
    increment: state => state + 1,
    decrement: state => state - 1,
  },
});

const store = configureStore({
  reducer: counterSlice.reducer,
});

// Использование:
store.dispatch(counterSlice.actions.increment());

Ответ 18+ 🔞

Да ты послушай, что эти умники придумали! Redux Toolkit, блядь, — это типа официальный такой набор, чтобы с Redux не ебаться как с пленным. Раньше же, сука, настроек было — овердохуища, писал константы, редьюсеры, экшены — руки отваливались, а тут — раз, и всё в кучу собрали, красота!

Чем они там балуются:

  • configureStore(): Эта штука, блядь, сама тебе и DevTools подтянет, и всякие middleware (ну там тот же Redux Thunk) прикрутит. Не надо больше голову ломать, ебать мои старые костыли!
  • createSlice(): Вообще песня! Раньше ты размазывал логику по трём файлам, а тут — один объект, и из него, как из рога изобилия, сыпятся и редьюсер, и экшены. Константы эти ебучие писать вообще забыл, как страшный сон.
  • createAsyncThunk(): Ну это для асинхронщины, когда данные с сервака тащишь. Раньше там танцы с бубном были, а теперь — более-менее цивильно.
  • И самое, блядь, приятное — Immer внутри уже сидит. То есть ты в редьюсере state можешь мутить как в обычном массиве или объекте, а он за кулисами сам неизменяемую копию сделает. Удобно, ёпта!

Смотри, как это выглядит, на простом примере:

import { createSlice, configureStore } from '@reduxjs/toolkit';

const counterSlice = createSlice({
  name: 'counter',
  initialState: 0,
  reducers: {
    increment: state => state + 1,
    decrement: state => state - 1,
  },
});

const store = configureStore({
  reducer: counterSlice.reducer,
});

// А юзать вот так, просто:
store.dispatch(counterSlice.actions.increment());

Видишь? Никакого геморроя. Создал слайс — и у тебя уже всё есть. Красота, в рот меня чих-пых! Раньше бы на это полдня убил, а тут — пять минут, и пошёл пиво пить.