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>