Сервис быстрых ответов от искусственного интеллекта
Вопрос пользователя:
Ответ нейросети:
Ошибка в коде связана с неправильным использованием метода createSlice из библиотеки @reduxjs/toolkit. Вместо selectors нужно использовать extraReducers для определения селекторов.
Исправленный код:
import { createSlice, createAsyncThunk, PayloadAction, nanoid } from '@reduxjs/toolkit'; import { TIngredient } from '@utils-types'; import { getIngredientsApi } from '../../utils/burger-api'; type TIngredientState = { ingredients: TIngredient[]; loading: boolean; error?: string | null } const initialState: TIngredientState = { ingredients: [], loading: false, error: '' } export const fetchIngredients = createAsyncThunk<TIngredient[]>( 'ingredients/fetchIngredients', async () => { const response = await getIngredientsApi(); return response; } ); const ingredientSlice = createSlice({ name: 'burgerIngredients', initialState, reducers: {}, extraReducers: (builder) => { builder .addCase(fetchIngredients.pending, (state) => { state.loading = true; }) .addCase(fetchIngredients.fulfilled, (state, action: PayloadAction<TIngredient[]>) => { state.ingredients = action.payload; state.loading = false; }) .addCase(fetchIngredients.rejected, (state) => { state.error = 'Ошибка при получении данных'; state.loading = false; }); } }); export const ingredientSliceReducer = ingredientSlice.reducer; export const { getIngredients } = ingredientSlice.actions;
Теперь селектор getIngredients доступен через ingredientSlice.actions, а не ingredientSlice.selectors.
Напишите нам, если в вопросе есть ваши персональные данные (yasnoponyatno24@yandex.ru)
Обратите внимание: ответы, предоставляемые искусственным интеллектом, могут не всегда быть точными. Не рассчитывайте на них в критически важных областях, таких как медицина, юриспруденция, финансы или в вопросах, связанных с безопасностью. Для важных решений всегда обращайтесь к квалифицированным специалистам. Администрация сайта не несет ответственности за контент, сгенерированный автоматически.