在按钮上调度时反应Redux问题



我有一个按钮,它可以调度一个操作来创建一个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
);

最新更新