関数内で vue コンポーザブル インスタンスにアクセスしますか?
P粉845862826
2023-08-29 08:59:18
<p>アプリケーション全体で何度も再利用したい、単純な vue コンポーズ可能な関数があるとします。この場合、これにはリアクティブ プロパティ (products、製品のリストを含む配列) と、新しい要素を配列にプッシュするメソッド "addProduct" があります。 </p>
<pre class="brush:php;toolbar:false;">エクスポート関数 useCart(){
const 積 = ref([])
const addProduct() =>{
products.push({アイテム: "ベースボール キャップ"、数量: 1})
}
戻る {
製品、
製品を追加
}
}</pre>
<p>うまくいきます。ただし、行がプロパティ「cart」を介して親「cart」にアクセスできるように、コンポーザブル カートのインスタンスを各行に渡したいと考えています。 </p>
<p>次のことが機能することを願っています。 「this」は、関数が呼び出されるオブジェクト (ショッピング カート インスタンス) を参照する必要があると思います。 </p>
<pre class="brush:php;toolbar:false;">エクスポート関数 useCart(){
const 積 = ref([])
const addProduct() =>{
//これはカート コンポーザブルのインスタンスである必要がありますか?
products.push({商品名: 「ベースボールキャップ」、数量: 1、カート: この})
}
戻る {
製品、
製品を追加
}
}</pre>
<p>しかし、コンポーザブルを使用してコンポーネントでテストすると、「this」の値が未定義になります: </p>
<pre class="brush:php;toolbar:false;">const testCart = useCart
testCart.addProduct()
<p>このコンテキストでは「this」が定義されていないのはなぜですか?また、コンポーザブル メソッド内のコンポーザブル インスタンスにアクセスするにはどうすればよいですか? </p>
正しく行えば、うまくいきます。
ただし、
しかし、.cart 属性でlambda
にはコンテキストがなく、this = window
code># # であるため、lambda
の代わりにfunctions()
を使用する必要があります。 # リーリーthis
コンテキストを使用するのに問題があります。
cart.products.value[0].cart.products
設計を再考することをお勧めします。そんなことはしません。に似ています。それはうまくいきません。