Vue 3 の次の単純なコンポーネントの例を参照してください:
one() 関数から two() 関数を呼び出すと、two 関数で this が発生する理由を理解しようとしています。 () 関数 真ん中は 未定義です。どちらの関数も setup() で返されるため、両方の関数が this にアクセスできることが期待されます。
関数から
関数を呼び出すと、
this
関数 真ん中は
です。どちらの関数も
で返されるため、両方の関数が
にアクセスできることが期待されます。
two() 関数でコンポーネント インスタンス this への参照を取得するにはどうすればよいでしょうか?
関数でコンポーネント インスタンス
への参照を取得するにはどうすればよいでしょうか?
Vue は依然として JavaScript のルールに従う必要があると思います。イベント ハンドラーが呼び出されるときは、通常、イベントを受信するオブジェクトのコンテキスト内で行われます。この場合、one() は <a> 要素の Proxy にバインドされ、this は # にバインドされます。 ##プロキシ###。 ただし、
one()
<a>
Proxy
は、コンテキスト なしで具体的に 呼び出されます (つまり、someobject.foo()## の代わりに two() # )。これは、this が未定義になることを意味します。 私は Vue にあまり詳しくありませんが、Vue はメソッドを自動的にバインドしないので、使用しないものに料金を支払う必要がないのだと思います。
なしで具体的に
# )。これは、
が未定義になることを意味します。
私は Vue にあまり詳しくありませんが、Vue はメソッドを自動的にバインドしないので、使用しないものに料金を支払う必要がないのだと思います。
の
は適切にバインドされているため、実際には two() を this のメソッドとして使用できます。裸の関数としてではなく: リーリー
two()
リーリー
Vue は依然として JavaScript のルールに従う必要があると思います。イベント ハンドラーが呼び出されるときは、通常、イベントを受信するオブジェクトのコンテキスト内で行われます。この場合、
ただし、
two()one()
は<a>
要素のProxy
にバインドされ、this
は # にバインドされます。 ##プロキシ###。は、コンテキスト
one()なしで具体的に
呼び出されます (つまり、someobject.foo()## の代わりに two()# )。これは、
thisが未定義になることを意味します。
私は Vue にあまり詳しくありませんが、Vue はメソッドを自動的にバインドしないので、使用しないものに料金を支払う必要がないのだと思います。
の
thisは適切にバインドされているため、実際には
two()
をthis
のメソッドとして使用できます。裸の関数としてではなく:リーリー