【问题标题】:Call multiple dispatch after getting axios response Redux得到axios响应Redux后调用多次dispatch
【发布时间】:2020-04-28 14:09:24
【问题描述】:

在从 axios 获得响应后,我需要调用多个调度我该怎么做,我目前的做法是只允许我发送一个调度,并且在尝试触发它给出的第二个调度时,错误说找不到资源。

export const getItem = (id) => dispatch =>{
    dispatch(setLoading);
    axios.get(`http://localhost:8081/getItem?id=${id}`)
    .then(
        res => dispatch({
            type: GET_ITEM,
            payload: res.data
        })
    )
}

我需要在收到响应后触发二次调度,二次调度的功能,我在从axios获得返回后需要这样做是因为响应中存储了唯一的电子邮件和id,所以我需要获取id,来自响应以触发辅助调用。

export const getUserItem = (payload) => dispatch =>{
    dispatch(setItemsLoading);
    axios.get(`http://localhost:8081/getUserItems?email=${payload.email}&id=${payload.id}`)
    .then(
        res => dispatch({
            type: GET_USER_ITEM,
            payload: res.data
        })
    )
}

有没有办法在收到来自 axios 的响应后调度 2?

【问题讨论】:

    标签: reactjs redux axios


    【解决方案1】:

    使用箭头语法,如果要执行多个语句,则需要添加括号:

    export const getItem = (id) => dispatch =>{
        dispatch(setLoading);
        axios.get(`http://localhost:8081/getItem?id=${id}`)
        .then(
            res => {
                dispatch({
                    type: GET_ITEM,
                    payload: res.data
                })
                //second dispatch
                dispatch({
                    type: GET_ITEM,
                    payload: res.data
                })
            }
        )
    }
    

    【讨论】:

    • 谢谢!这行得通,我实际上做了同样的事情,并在第二次调度之前添加了一个 , 导致应用程序崩溃:)
    • 嗨@Marques。您不能在第二次调度之前添加逗号。认为 dispatch 是一个函数。您可以在第一次调度的末尾添加一个分号,以便在视觉上将其与第二次分派分开,就像您可以使用任何其他函数一样。
    猜你喜欢
    • 2018-09-18
    • 1970-01-01
    • 2019-10-02
    • 2023-01-17
    • 2021-11-11
    • 2019-09-13
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多