/
hey_yo
/
Notebook
Обзор
Документация
Войти
/
hey_yo
/
Notebook
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/store/userSlice.js
43 строки
1 KB
mike.r
learn(redux): начало + route
04 май 2026, 13:37
04 май 2026, 13:37
bc64829
Код
Авторство
О чём код?
import {createAsyncThunk, createSlice} from "@reduxjs/toolkit"; export const fetchUsers = createAsyncThunk('users/fetchUsers', async () => { const response = await fetch('http://localhost:3001/users'); return await response.json(); }); const userSlice = createSlice({ name: 'users', initialState: { list: [], loading: false, error: false, }, reducers: { toggleOnline(state, action) { const userId = action.payload; const user = state.list.find(item => item.id === userId); if (user) { user.isOnline = !user.isOnline; } } }, extraReducers: (builder) => { builder .addCase(fetchUsers.pending, state => { state.loading = true; state.error = false; }) .addCase(fetchUsers.fulfilled, (state, action) => { state.loading = false; state.list = action.payload; }) .addCase(fetchUsers.rejected, state => { state.loading = false; state.error = true; }) }, }); export const { toggleOnline } = userSlice.actions; export default userSlice.reducer;