【发布时间】:2021-02-17 10:28:55
【问题描述】:
我正在尝试使用 axios 在 react 中获取表单列表
这是函数
useEffect(() => {
const fetchData = async () => {
dispatch({ type: 'SET_STATE', payload: { loading: true } })
const response = await axios
.get(`${API_URL}/form`, {
userId: localStorage.getItem('userId'),
headers: {
authorization: localStorage.getItem('userId')
}
})
console.log(response)
.catch((err) => {
if (err.response.status === 401) history.push('/login')
return dispatch({
type: 'SET_STATE',
payload: { loading: false, error: err.response.data.msg }
})
})
dispatch({
type: 'SET_STATE', payload: {
data: response.data.form,
loading: false,
},
})
}
fetchData()
return () => {
dispatch({ type: 'SET_STATE', payload: { loading: true, error: '' } })
}
}, [])
这就是减速器
const initialState = {
data: [],
loading: false,
error: '',
}
const formReducer = (state = initialState, action) => {
switch (action.type) {
case 'SET_STATE':
return { ...state, ...action.payload }
default:
return state
}
}
但我收到此错误:
未处理的拒绝(TypeError):无法读取未定义的属性“catch”
【问题讨论】:
-
您正试图捕捉
console.log()的结果,但登录到控制台没有任何作用。您应该在任何地方使用await语法或.then/.catch,不要混合使用它们。