假设我有一个简单的vue可组合函数,我想在我的应用程序中多次重用它。在这种情况下,它有一个React性属性(products,一个包含产品列表的数组)和一个方法“addProduct”,它将一个新元素推入数组。
export function useCart(){
const products = ref([])
const addProduct() =>{
products.push({item: "Baseball Cap", quantity: 1})
}
return {
products,
addProduct
}
}
这很好,但是,我想将cart composable的示例传递给每一行,这样这一行就可以通过属性“cart”访问父“cart”。
我希望下面的工作。我相信“this”应该引用调用函数的对象(cart的示例):
export function useCart(){
const products = ref([])
const addProduct() =>{
//this should be the instance of the cart composable?
products.push({item: "Baseball Cap", quantity: 1, cart: this})
}
return {
products,
addProduct
}
}
然而,当我在使用可组合组件的组件中进行测试时,“this”的值是未定义的:
const testCart = useCart
testCart.addProduct()
为什么“this”在这个上下文中未定义,我如何访问可组合方法中的可组合示例?
1条答案
按热度按时间cnjp1d6j1#
如果你做得对,它就会起作用。
但是必须使用
functions()
而不是lambdas
,因为lambdas
没有上下文,而this = window
没有上下文。但是我很难从.cart属性使用
this
上下文。就像
cart.products.value[0].cart.products
,它就是不起作用。我建议你重新考虑一下这个设计。我不会那样做的。
去操场看看。第二次是窗口。
x一个一个一个一个x一个一个二个x