【发布时间】:2020-11-09 07:50:57
【问题描述】:
我目前正在设置我的 RTK (Redux Toolkit) 并进行了一些小测试。这是我的代码:
store/index.js
import { configureStore } from '@reduxjs/toolkit'
import { loginSliceReducer } from './views/page/login/loginSlice'
export default configureStore({
reducer: {
login: loginSliceReducer
}
})
loginSlice.js
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit'
import ApiService from '../../services/ApiService'
export const authorize = createAsyncThunk(
'api/authorize',
async (email, password) => {
const response = await ApiService.post(email, password)
return response.data
}
)
export const loginSlice = createSlice({
name: 'login',
initialState: {
loading: true,
token: null,
data: []
},
reducers: {
updateState: (state, action) => {
const { payload } = action
switch (payload.type) {
case AUTH_SUCCESS:
state.loading = false
state.token = payload.token
state.data = payload.data
break
default:
}
}
},
extraReducers: {
[authorize.fulfilled]: (state, action) => {
// ... do state update here
}
}
})
export default loginSlice.reducer
login.js
import React, { useEffect } from 'react'
import { useSelector, useDispatch } from 'react-redux'
import { authorize } from './loginSlice'
const Login = () => {
const dispatch = useDispatch()
useEffect(() => {
dispatch(authorize('testuser@example.com', 'test123'))
}, [])
return <div>Auth Test</div>
}
上面的代码不起作用。我不断收到此错误:
Error: Actions must be plain objects. Use custom middleware for async actions.
在这一行:
> 25 | dispatch(authorize('testuser@example.com', 'test123'))
请不要介意我在 useEffect 上触发授权,因为这只是一个测试,以检查是否正在调用端点并检查请求成功后状态是否会更新。 :-D
【问题讨论】:
-
在我的错误上标记@markerikson。请帮忙
-
向我们展示您配置商店的代码。有没有应用
thunk中间件? -
我会更新帖子
标签: javascript reactjs redux redux-thunk redux-toolkit