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