光环家伙,我正在创建一个项目使用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.
请任何人都可以帮助或有任何想法我如何可以修复这个错误
1条答案
按热度按时间rdrgkggo1#
出现错误是因为您正在使用自己在useEffect()中创建的函数调用dispatch。
createAsyncThunk
创建一个普通对象,其中包含处理异步请求的信息。因此,您应该使用
dispatch(fetchUserArticle(user._id))
,因为dispatch
知道如何处理该函数的结果。因为您没有使用普通对象(action)调用
dispatch
,所以会收到错误。