我有一个按钮,它可以调度一个操作来创建一个post,由于某种原因,请求从未继续,它失败了。这就是行动。我有常量,这就是为什么类型不在字符串上的原因
export const createPost = () => async (dispatch, getState) => {
try {
dispatch({
type: POST_CREATE_REQUEST,
});
const {
userLogin: { userInfo },
} = getState();
const config = {
headers: {
Authorization: `Bearer ${userInfo.token}`,
},
};
const { data } = await axios.post(
`http://localhost:5000/api/posts`,
config
);
dispatch({
type: POST_CREATE_SUCCESS,
payload: data,
});
} catch (error) {
const message =
error.response && error.response.data.message
? error.response.data.message
: error.message;
// if (message === 'Not authorized, token failed') {
// dispatch(logout());
// }
dispatch({
type: POST_CREATE_FAIL,
payload: message,
});
}
};
它继续到POST_CREATE _REQUEST,但总是出错到POST_REATE_FAIL。
我尝试过使用poster,它运行良好,我认为问题是createPost操作似乎无法接收令牌,即使我以管理员身份登录,我也不确定。
这是创建后的useSelector
const postCreate = useSelector(state => state.postCreate);
const {
loading: loadingCreate,
error: errorCreate,
success: successCreate,
post: createdPost,
} = postCreate;
这是当前以管理员身份登录的用户的useSelector。
const userLogin = useSelector(state => state.userLogin);
const { userInfo } = userLogin;
重写此代码
const { data } = await axios.post(
`http://localhost:5000/api/posts`,
config
);
作为
const res = await axios.post(
`http://localhost:5000/api/posts`,
config
);
const data = res && res.data
后端的控制器上已经有值,只需要在操作中添加括号
从这个
const { data } = await axios.post(
`http://localhost:5000/api/posts`,
config
);
到这个
const { data } = await axios.post(
`http://localhost:5000/api/posts`, {},
config
);