React Redux Axios Api使用路径参数获取呼叫

时间:2020-09-13 14:39:59

标签: reactjs redux react-redux axios react-hooks

我正在尝试使用path变量对我的后端服务器进行axios get调用,并将响应数据保存到存储中。不幸的是,它仅适用于没有路径变量的get调用。仍然可以在控制台中记录响应,但是无法将response.data分发到商店

fetchByCardNumber: (CardNumber) => axios.get(baseURL+'loyalty/loyaltyCustomer/card/'+ CardNumber) 

export const fetchByCardNumber = (CardNumber) => dispatch => {
    LoyaltyAPI().fetchByCardNumber(CardNumber)
        .then(response => {
            if (response.status !== 200){
                dispatch(Customer(null))
            } else {
                dispatch(Customer(response.data))
            }
        }).catch(error => {
        return error;
    })
}

但是无论我在axios中使用不带pathVaribale的URL还是可以调用它。

例如:fetchCards: () => axios.get(baseURL+'loyalty/loyaltyCard/all') 使用上面的URL时,我可以将响应发送到商店并获取。

2 个答案:

答案 0 :(得分:1)

//use it like that without curly braces between {cardNumber}

fetchByCardNumber: (CardNumber) => axios.get(baseURL+'loyalty/loyaltyCustomer/card/'+ CardNumber) 

export const fetchByCardNumber = (CardNumber) => dispatch => {
    LoyaltyAPI().fetchByCardNumber(CardNumber)
        .then(response => {
            if (response.status !== 200){
                dispatch(Customer(null))
            } else {
                dispatch(Customer(response.data))
            }
        }).catch(error => {
        return error;
    })
}

答案 1 :(得分:1)

问题在于将响应分发到商店的方式。以下代码有效。

export const fetchByCardNumber = (CardNumber) => dispatch => {
    LoyaltyAPI().fetchByCardNumber(CardNumber)
        .then(response => {
            if (response.status !== 200){
                store.dispatch(SelectedCustomer(null))
            } else {
                store.dispatch(SelectedCustomer(response.data))
            }
        }).catch(error => {
        return error;
        })
}