【发布时间】:2022-12-11 10:53:50
【问题描述】:
当动作结束时,没有调用 extraReducer
我正在尝试获取此 url,它将向我返回一个项目列表,fetchItems 方法由 dispatch 调用,但最后,未调用第 55 行的额外 reducer。也许我不理解 extraReducers 的逻辑,但它的代码是基于 redux-toolkit 文档
import { createSlice, createAsyncThunk } from "@reduxjs/toolkit";
export const fetchItens = createAsyncThunk('table/fetchItens/ful', async (payload, thunkAPI) => {
let returnedData = null;
if (payload.serie === 0) {
console.log(payload)
await fetch('http://localhost:3006/campeonatos/brasileiraoA').then(async function (response) {
await response.json().then(function (data) {
if (data.error) {
console.log("Ocorreu um erro.")
} else {
returnedData = data.dados
}
});
}).catch(function (err) {
console.error('Ocorreu um erro.', err);
});
}
if (payload.serie === 1) {
console.log(payload)
await fetch('http://localhost:3006/campeonatos/brasileiraoB').then(async function (response) {
await response.json().then(function (data) {
if (data.error) {
console.log("Ocorreu um erro.")
} else {
returnedData = data.dados
}
});
}).catch(function (err) {
console.error('Ocorreu um erro.', err);
});
}
return returnedData;
})
export const slice = createSlice({
name: 'counter',
initialState: {
dates: [
]
},
reducers: {
setDate: (state, { payload }) => {
return {
...state,
dates: payload.dates
}
}
},
extraReducers: (builder) => {
builder.addCase(fetchItens.fulfilled, (state, { payload }) => {
payload.map((item) => state.dates.push(item))
})
}
});
export const { setDate } = slice.actions;
export const getDates = (state) => state.dates
export default slice.reducer;
这是商店设置
import navigationReducer from "./navigationSlice";
const { combineReducers, configureStore, getDefaultMiddleware } = require("@reduxjs/toolkit")
export default configureStore(
{
reducer: combineReducers({
selectedElement: navigationReducer
}),
}
);
它的名字叫
const { selectedElement } = useSelector(getSelectedElement)
useEffect(() => {
// console.log(selectedElement)
dispatch(fetchItens({
serie: selectedElement
}));
}, [selectedElement])
【问题讨论】:
-
你的
console.log(payload)被执行了吗? -
请出示您的商店设置和调用
fetchItens的代码。 -
@ChetanKondawle 是的。它已被执行
-
@phry 见上,请帮忙
-
@ChetanKondawle tks 翻译更正
标签: reactjs react-redux redux-toolkit redux-thunk