P粉2587888312023-08-30 00:18:04
如果你做得对,那么它就会起作用。
但是您必须使用 functions()
而不是 lambda
,因为 lambda
没有上下文,并且 this = window
代码>
const addProduct = function() { //this should be the instance of the cart composable? products.value.push({item: "Baseball Cap", quantity: 1, cart: this}) }
但我很难使用 .cart 属性中的 this
上下文。
类似于cart.products.value[0].cart.products
。它就是行不通。
我建议您重新考虑设计。我不会那样做。
检查操场。第二次是窗口。
const { ref } = Vue;
const useCart = function() {
const products = ref([])
const addProduct1 = function() {
//this should be the instance of the cart composable?
products.value.push({item: "Baseball Cap", quantity: 1, cart: this})
}
const addProduct2 = () => {
//this should be the instance of the cart composable?
products.value.push({item: "Baseball Cap", quantity: 1, cart: this})
}
return {
products,
addProduct1,
addProduct2
}
}
const cart = useCart();
cart.addProduct1();
console.log(cart.products.value[0].cart)
cart.addProduct2();
console.log(cart.products.value[1].cart)
<script src="https://cdn.jsdelivr.net/npm/vue@3/dist/vue.global.prod.js"></script>