【问题标题】:React Redux extraReducers action payload unknown typeReact Redux extraReducers 动作负载未知类型
【发布时间】: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


【解决方案1】:

解决方案是在createAsyncThunk 和参数之间添加&lt;CampaignChart[]&gt;

export const fetchCampaigns = createAsyncThunk <CampaignChart[]>('campaigns/fetchCampaigns', 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多