繁体   English   中英

为什么 React 不调度动作?

[英]Why isn't React dispatching action?

看到一些类似的帖子,还没有找到我的答案。 我有这段代码试图从数组中删除 object,并设置了后端,因此它可以在 Post Man 上工作,当我开始使用 Redux 时,我遇到了这个问题。

动作.js

export const deletePost = (id) => async (dispatch) => {
    try {
        await axios.delete(`api/posts/${id}`);

        dispatch({
            type: DELETE_POST,
            payload: { id },
        });

        dispatch(setAlert('Post removed', 'success'));
    } catch (err) {
        dispatch({
            type: POST_ERROR,
            payload: { msg: err.response.statusText, status: err.response.status },
        });
    }
};

Reducer 已合并到根 reducer 文件中

减速器.js

        case DELETE_POST:
            return {
                ...state,
                posts: state.posts.filter((post) => post._id !== payload), ///Removes the post from the array
                loading: false,
            };

组件.js

                {!auth.loading && user === auth.user._id && (
                    <button
                        onClick={() => deletePost(_id)}
                        type='button'
                        className='btn btn-danger'
                    >
                        <i className='fas fa-delete-left'></i>
                    </button>
                )}

我试过调试,当我单击按钮时,deletePost() 操作似乎甚至没有开始运行。

我发现这段代码实际上删除了,但是在 action.js 文件中,当我分派DELETE_POST类型时,它会立即运行 catch。 问题出在 try{dispatch()} function 中,因为我想在它实际记录之前记录,但我想在之后记录的却没有。

编辑:它说对于 action.js 文件中的每个调度,调度不是 function ......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM