reactjs 难以使用外挂和减速器未捕捉错误:操作必须是普通对象

fykwrbwg  于 2023-01-30  发布在  React
关注(0)|答案(1)|浏览(122)

光环家伙,我正在创建一个项目使用reduxReact&我得到这个错误,这是我不熟悉以下是我的代码&错误
贮藏

const reducer = {
    auth: authReducer,
    msg: msgReducer,
    data: dataReducer
}

const store = configureStore({
     reducer: reducer,
     devTools: true,
     middleware: [thunk]
})

切片文件

export const fetchUserArticle =createAsyncThunk(
    'article/get-article-user',
    async(id, thunkAPI)=>{
        try{
            const response = await dataService.getUserArticles(id)
            thunkAPI.dispatch(setMessage(response.msg))
            
            return response
        }
        catch(err){
            const message = (
                err.message 
            ) || err.response ||
            err.toString()
            thunkAPI.dispatch(setMessage(message))
            return thunkAPI.rejectWithValue()
        }
    }
)

其他页面

useEffect(()=>{
        dispatch(getUserArticle())
    },)

    const getUserArticle =() =>{
        dispatch(fetchUserArticle(user._id))
            .unwrap()
            .then((res) =>{
                article = res.data
                setArticle(articles, res.data)
              }
        )
    }

错误消息

react-dom.development.js:22839 Uncaught Error: Actions must be plain objects. Use custom middleware for async actions.

请任何人都可以帮助或有任何想法我如何可以修复这个错误

rdrgkggo

rdrgkggo1#

出现错误是因为您正在使用自己在useEffect()中创建的函数调用dispatch。
createAsyncThunk创建一个普通对象,其中包含处理异步请求的信息。
因此,您应该使用dispatch(fetchUserArticle(user._id)),因为dispatch知道如何处理该函数的结果。
因为您没有使用普通对象(action)调用dispatch,所以会收到错误。

相关问题