Accéder à l'instance composable de Vue en fonction ?
P粉845862826
2023-08-29 08:59:18
<p>Supposons que j'ai une simple fonction composable vue que je souhaite réutiliser plusieurs fois dans mon application. Dans ce cas, il possède une propriété réactive (products, un tableau contenant une liste de produits) et une méthode "addProduct" qui pousse les nouveaux éléments vers le tableau. </p>
<pre class="brush:php;toolbar:false;">fonction d'exportation useCart(){
const produits = ref([])
const addProduct() =>{
products.push({article : "Casquette de baseball", quantité : 1})
}
retour {
des produits,
ajouter un produit
}
}</pré>
<p>Ça fonctionne très bien. Cependant, je souhaite transmettre une instance du panier composable à chaque ligne afin que la ligne puisse accéder au « panier » parent via la propriété « panier ». </p>
<p>J'espère que les résultats suivants fonctionneront. Je pense que "ceci" devrait faire référence à l'objet sur lequel la fonction est appelée (l'instance du panier): </p>
<pre class="brush:php;toolbar:false;">fonction d'exportation useCart(){
const produits = ref([])
const addProduct() =>{
//cela devrait être l'instance du composable cart ?
products.push({article : "Casquette de baseball", quantité : 1, panier : ceci})
}
retour {
des produits,
ajouter un produit
}
}</pré>
<p>Cependant, lorsque je teste un composant utilisant des composables, la valeur de "this" n'est pas définie : </p>
<pre class="brush:php;toolbar:false;">const testCart = useCart
testCart.addProduct()</pre>
<p>Pourquoi « ceci » n'est-il pas défini dans ce contexte et comment puis-je accéder à l'instance composable à l'intérieur de la méthode composable ? </p>
Si vous le faites correctement, cela fonctionnera.
Mais vous devez utiliser
functions()
而不是lambda
,因为lambda
没有上下文,并且this = window
code>Mais j'ai du mal à utiliser le contexte
this
dans l'attribut .cart.est similaire à
cart.products.value[0].cart.products
. Cela ne fonctionne tout simplement pas.Je vous propose de repenser le design. Je ne ferai pas ça.
Découvrez l'aire de jeux. La deuxième fois, c'est la fenêtre.