【发布时间】:2022-06-20 23:18:42
【问题描述】:
我有以下反应组件,它根据购物车中的项目从 mongodb 集合中删除产品。运行代码时出现此错误:
组件:
function AddOrder() {
const d = new Date();
let text = d.toString();
const { currentUser } = useContext(AuthContext);
const { data, loading, error } = useQuery(queries.GET_USER_BY_ID, {
fetchPolicy: "network-only",
variables: {
id: currentUser.uid,
},
});
const getUserOrders = useQuery(queries.GET_USER_ORDERS, {
fetchPolicy: "network-only",
variables: {
userId: currentUser.uid,
},
});
const [addOrder] = useMutation(queries.ADD_ORDER);
const [editProduct] = useMutation(queries.EDIT_PRODUCT);
if (error) {
return <h1> error</h1>;
} else if (loading) {
return <h1> loading</h1>;
} else if (data && getUserOrders.data && currentUser && data.getUser.cart.length > 0) {
let newCart = [];
for (let i = 0; i < data.getUser.cart.length; i++) {
newCart.push({ quantity: data.getUser.cart[i].quantity, _id: data.getUser.cart[i]._id });
}
addOrder({
variables: {
userId: currentUser.uid,
status: "ordered",
createdAt: text,
products: newCart,
flag: getUserOrders.data.userOrders.length + 1,
},
});
newCart.map((x) => {
let getProd = useQuery(queries.GET_PRODUCTS_BY_ID, {
fetchPolicy: "network-only",
variables: {
_id : x._id
},
});
let a = getProd.quantity -x.quantity
editProduct({
variables: {
_id : x._id,
quantity: a
},
});
})
}
}
export default AddOrder;
我得到的错误是:
React Hook "useQuery" cannot be called inside a callback. React Hooks must be called in a React function component or a custom React Hook function
我尝试将 map 函数添加为内部函数,但这也无济于事。我该如何解决这个问题?
【问题讨论】:
标签: reactjs mongodb react-hooks graphql apollo-client