目的nextTickの役割といくつかの簡単な使用シナリオを理解する 文章その機能は何ですか?遅延コールバックは、次の DOM 更新サイクルが完了した後に実行されます。データの変更後すぐにこのメソッドを使用して、更新された DOM を取得します。 Vue のレンダリング プロセスは誰もが知っているか理解していると思います。Vue はデータの変更を監視した後、再レンダリングを行い、VDOM と連携して実際の DOM を更新します。nextTick のトリガー時間は、メソッドが呼び出された後の最初の再レンダリング後です。 使い方は?使い方は2通りあり、1つはコールバックを渡す方法、もう1つはPromiseを使う方法です。公式の使用例は以下の通りです。 // データを変更 vm.msg = 'Hello' // DOMはまだ更新されていません Vue.nextTick(function () { // DOMが更新されました}) // Promise として使用します (2.1.0 以降の新機能、詳細については以下のヒントを参照してください) Vue.nextTick() .then(関数() { // DOMが更新されました}) SPA(単一ファイルコンポーネント)の場合は次のようになります。 <テンプレート> <div id="test">{{メッセージ}}</div> </テンプレート> <スクリプト> エクスポートデフォルト{ 名前: 'アプリ', データ() { 戻る { "msg": "こんにちは世界!" } }, 方法() { this.msg = "こんにちは世界!"; this.$nextTick(() => { console.log('DOM が更新されました:', document.getElementById('test').innerHTML) }); } } </スクリプト> 使用シナリオは何ですか?いくつかのメソッドは、実行前にレンダリングが完了するまで待つ必要があります。 バインディングを初期化するかDOMを操作するたとえば、作成およびマウントされたコールバックでレンダリングされた DOM を操作する必要がある場合は、nextTick で関連するロジックを実行する必要があります。これは、DOM にバインドする必要がある古いライブラリを使用する必要がある場合に非常に便利です。 例えば、UEditorをロードするときには、次のようにします。 <テンプレート> <script id="container" name="content" type="text/plain"> ここに初期化コンテンツを記述します</script> </テンプレート> <スクリプト> エクスポートデフォルト{ マウント() { this.nextTick(() => { var ue = UE.getEditor('コンテナ'); }); } } 要素の幅を取得するVue で要素の幅を取得する方法は 2 つあります。1 つ目は <テンプレート> <p ref="myWidth" v-if="showMe">{{ message }}</p> <button @click="getMyWidth">p 要素の幅を取得します</button> </テンプレート> <スクリプト> エクスポートデフォルト{ データ() { 戻る { メッセージ: "Hello world!", showMe: 偽、 }, メソッド: { 幅を取得します(){ this.showMe = true; //this.message = this.refs.myWidth.offsetWidth; //TypeError: this.refs.myWidth は未定義です this.nextTick(()=>{ //DOM 要素が更新された後に実行し、p 要素の属性を取得できます this.message = this.refs.myWidth.offsetWidth; }) } } } } </スクリプト> 要約するVue の設計哲学では DOM を直接操作することは推奨されていませんが、いくつかのシナリオでは特に混乱を招く問題が発生します。Vue のレンダリング ロジックを理解した後、 nextTick() を使用すると、それらの問題を解決できます。 以上が、Vue での nextTick の使い方の詳細です。Vue での nextTick の使い方の詳細については、123WORDPRESS.COM の他の関連記事もご覧ください。 以下もご興味があるかもしれません:
|
<<: Centos7 の起動プロセスと Systemd での Nginx の起動構成
>>: Navicat が MySQL に接続するときに発生する 1045 エラーの解決方法
この記事では、年、月、日の3段階のリンクを実現するためのJavaScriptの具体的なコードを参考ま...
この記事では、参考までにMySQL 5.7.17圧縮版のインストール手順を紹介します。具体的な内容は...
この記事では、例を使用して、MySQL スライディング順序問題の原理と解決方法を説明します。ご参考ま...
目次1. 日付までのタイムスタンプ2. UTCを北京時間に変換するWXS (WeiXin Scrip...
最近、新しいプロジェクトでは springcloud と docker が使用されています。この 2...
コードをコピーコードは次のとおりです。 <div class="content&qu...
目次1 システムスループットの簡単な紹介2 試験方法2.1 クライアントテストツール2.1.1 GE...
1. ローカルyumソースを設定する1. ISOイメージをマウントする マウント -o loop /...
1. 環境: MySQL-5.0.41-win32 Windows XP プロフェッショナル2. テ...
1.MySQL関数1. 数学関数PI() # 円周率 (pi) の値を返します。デフォルトの小数点...
ビッグデータはますます注目を集めており、ビッグデータのいくつかの構成要素に精通していないと、自慢でき...
Vue コンポーネントは接続されているため、コンポーネント間で値を渡す必要があるのは避けられません...
TW のメインテキスト ページは、以前は小さなモニターと低解像度のユーザーを考慮して幅が 850 ピ...
目次ケースシナリオ問題を解決するまとめケースシナリオ本日、オンラインで問題が発見されました。監視範囲...
Windows 64 ビット版 MySQL 5.7 以降の解凍パッケージにデータディレクトリ、my-...