【发布时间】:2021-12-10 05:00:27
【问题描述】:
我正在尝试发出 axios 获取请求并将 response.data 推送到带有 extraReducers 的状态,action.payload 的类型未知,因此我无法设置campaignList 状态(错误也会发生同样的情况)
export type initialStateType = {
campaignStatus: string;
campaignList: CampaignChart[];
responseError: string | null;
}
const initialState: initialStateType = {
campaignStatus: 'idle',
campaignList: [],
responseError: null,
}
export const fetchCampaigns = createAsyncThunk('campaigns/fetchCampaigns', async (_, thunkAPI) => {
try {
const response = await axios.get<CampaignChart[]>(BASE_URL + '/campaigns');
return response.data
} catch(error){
return thunkAPI.rejectWithValue({ error: error.message})
}
})
export const campaignSlice = createSlice({
name: 'campaign',
initialState,
reducers: {
},
extraReducers(builder) {
builder
.addCase(fetchCampaigns.pending, (state, action) => {
state.campaignStatus = 'loading'
})
.addCase(fetchCampaigns.fulfilled, (state, action) => {
state.campaignStatus = 'succeeded'
state.campaignList = state.campaignList.concat(action.payload)
})
.addCase(fetchCampaigns.rejected, (state, action) => {
state.campaignStatus = 'failed'
state.responseError = action.error.message
})
}
});
另外,谁能帮我模拟这个 fetch 调用,以便我可以使用 react-testing-library 对其进行单元测试?
【问题讨论】:
-
你遇到了什么错误?
-
它告诉我 action.payload 的类型未知,不能添加到类型为
的campaignList 中。解决方案是在 createAsyncThunk 和参数之间添加 。 ` export const fetchCampaigns = createAsyncThunk ('campaigns/fetchCampaigns', ` 像这样。
标签: reactjs typescript redux redux-toolkit