【问题标题】:Redux Toolkit - Actions may not have an undefined "type" property. Have you misspelled a constant? [closed]Redux Toolkit - 操作可能没有未定义的“类型”属性。你有没有拼错一个常数? [关闭]
【发布时间】:2021-07-26 08:18:14
【问题描述】:

我正在使用 redux 工具包,但我收到“操作可能没有未定义的“类型”属性。您是否拼错了常量?”

我不知道我的问题出在哪里,谁能帮我解决这个问题?

export const savePartner = createAsyncThunk('partner/savePartner', async (partnerData, { dispatch }) => {
    const response = await axios.post('admin/partners/', {
        name: partnerData.name,
        externalId: partnerData.externalId,
        eaccount: partnerData.eaccount,
        cashAccount: partnerData.cashAccount,
        externalGLAccount: partnerData.externalGLAccount,
        kosGiroId: partnerData.kosGiroId,
    });
    const data = await response.data;
    return dispatch(data);
});


const partnerSlice = createSlice({
    name: 'partner',
    initialState: null,
    reducers: {
        resetPartner: () => null,
        newPartner: {
            reducer: (state, action) => action.payload,
            prepare: event => ({
                payload: {
                    name: "",
                    externalId: "",
                    eaccount: "",
                    cashAccount: "",
                    externalGLAccount: "",
                    kosGiroId: "",
                    // status: ""
                }
            })
        }
    },
    extraReducers: {
        [getPartner.fulfilled]: (state, action) => action.payload,
        [savePartner.fulfilled]: (state, action) => action.payload,
        // [editPartner.fulfilled]: (state, action) => action.payload,
        [removePartner.fulfilled]: (state, action) => null
    }
});

export const { newPartner, resetPartner } = partnerSlice.actions;

export default partnerSlice.reducer;

【问题讨论】:

    标签: javascript reactjs react-native react-redux redux-toolkit


    【解决方案1】:

    正如错误所述,在调度操作时,您应该提及您引用的操作。

    我猜你不想在异步 thunk 中分派一个动作:

    export const savePartner = createAsyncThunk('partner/savePartner', async (partnerData, { dispatch }) => {
        const response = await axios.post('admin/partners/', {
            name: partnerData.name,
            externalId: partnerData.externalId,
            eaccount: partnerData.eaccount,
            cashAccount: partnerData.cashAccount,
            externalGLAccount: partnerData.externalGLAccount,
            kosGiroId: partnerData.kosGiroId,
        });
        const data = await response.data;
        return data;
    });
    

    如果你这样做了,有时它会在发出 thunk 后触发另一个动作,你需要指定你引用的动作:

    // GOOD
    dispatch({type: 'someOtherAction', payload: data);
    
    // BAD
    dispatch(data); // Which action is it?
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 2019-05-09
      相关资源
      最近更新 更多