gpt4 book ai didi

javascript - 为什么我的 React/Redux 函数没有返回 Promise?

转载 作者:行者123 更新时间:2023-12-01 02:13:18 24 4
gpt4 key购买 nike

我在购物车操作中,正在从同一文件中的另一个函数调用 loadCartItems()。但是,这个函数没有返回 promise 或任何数据,我不知道为什么。我的 loadCartItems() 函数实际上甚至没有被识别为函数。有谁知道为什么会这样?

export function loadCartItems() {
return (dispatch, getState) => {
dispatch({
type: types.LOAD_CART_PRODUCTS
});
return AsyncStorage.getItem(STORAGE_KEY_JWT_TOKEN).then((key) => {
return API.getCartItems(key)
.then((response) => {
return dispatch({
type: types.LOAD_CART_PRODUCTS_SUCCESS,
response
});
}).catch(err => {
console.log('Error retrieving cart products');
})
}).catch(err => {
console.log("Error retrieving cart items from local storage");
});
};
}

export function getUnaddedCartItems() {
return (dispatch, getState) => {
dispatch({
type: types.GET_UNADDED_ITEMS
});
return AsyncStorage.getItem(STORAGE_KEY_CART_ITEMS).then((result) => {
const addedItems = JSON.parse(result);

loadCartItems()
.then((result) => {
const cartItems = result.response.products;

if (this.state.unaddedCartItems.length === 0) {
const unaddedCartItems = addedItems.filter((addedItem) => {
return cartItems.find(cartItem => cartItem.id !== addedItem.productId);
});
}
}).catch(err => {
consoel.log('error: ', err);
});
}).catch(error => {
console.log('error: ', error);
});
};
}

enter image description here

最佳答案

this.loadCartItems() 不是函数。 loadCartItems() 是。

由于它们不在公共(public)类/对象/某物中,因此无需使用 this。它基本上就像一个全局变量(在该文件的上下文中),所以只需直接调用它即可。

<小时/>

仔细观察一下,您似乎正在尝试在 Action 创建者中调用 Action 创建者。那是你的问题。

通常,您将这些操作映射到组件内,因此它会为您处理dispatch 位。但是,当您自己直接调用该函数时,您还需要自己处理它。

既然您已经删除了 this,那么

loadCartItems().then 就不再是函数了。这是有道理的,因为 loadCartItems() 实际上返回一个函数,而不是 Promise。该函数接受两个参数:dispatchgetState

您需要这样调用它:loadCartItems()(dispatch, getState).then()

关于javascript - 为什么我的 React/Redux 函数没有返回 Promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49615073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com