Akses contoh boleh gubah vue dalam fungsi?
P粉845862826
2023-08-29 08:59:18
<p>Andaikan saya mempunyai fungsi boleh gubah vue mudah yang saya mahu gunakan semula beberapa kali sepanjang aplikasi saya. Dalam kes ini, ia mempunyai sifat reaktif (produk, tatasusunan yang mengandungi senarai produk) dan kaedah "tambahProduk" yang menolak elemen baharu ke tatasusunan. </p>
<pre class="brush:php;toolbar:false;">fungsi eksport useCart(){
produk const = ref([])
const addProduct() =>{
products.push({item: "Baseball Cap", kuantiti: 1})
}
kembali {
produk,
tambahProduk
}
}</pre>
<p>Ia berfungsi hebat. Walau bagaimanapun, saya ingin menghantar contoh troli boleh gubah ke setiap baris supaya baris itu boleh mengakses "troli" induk melalui "troli" harta. </p>
<p>Saya harap perkara berikut berfungsi. Saya percaya "ini" harus merujuk kepada objek yang dipanggil fungsi (contoh troli beli-belah): </p>
<pre class="brush:php;toolbar:false;">fungsi eksport useCart(){
produk const = ref([])
const addProduct() =>{
//ini sepatutnya contoh troli boleh digubah?
products.push({item: "Tudung Besbol", kuantiti: 1, troli: ini})
}
kembali {
produk,
tambahProduk
}
}</pre>
<p>Walau bagaimanapun, apabila saya menguji dalam komponen menggunakan komposit, nilai "ini" tidak ditentukan: </p>
<pre class="brush:php;toolbar:false;">const testCart = useCart
testCart.addProduct()</pre>
<p>Mengapa "ini" tidak ditakrifkan dalam konteks ini dan bagaimana saya boleh mengakses contoh boleh gubah dalam kaedah boleh gubah? </p>
Jika anda melakukannya dengan betul, ia akan berkesan.
Tetapi anda perlu menggunakan
functions()
而不是lambda
,因为lambda
没有上下文,并且this = window
kod>Tetapi saya menghadapi masalah menggunakan konteks
this
dalam atribut .cart.serupa dengan
cart.products.value[0].cart.products
. Ia hanya tidak berfungsi.Saya cadangkan anda memikirkan semula reka bentuk. Saya tidak akan berbuat demikian.
Lihat taman permainan. Kali kedua ialah tingkap.