多くのコンポーネントでデータ/ユーティリティを使用する可能性がありますが、グローバル スコープを汚染したくはありません。この場合、プロトタイプで定義することで、すべての Vue インスタンスで使用できるようにすることができます。 1. 基本的な例main.js の Vue.prototype に変数を追加する Vue.prototype.$appName = '私のアプリ' この方法では、インスタンスが作成される前であっても、$appName はすべての Vue インスタンスで使用できます。 新しいVue({ beforeCreate: 関数() { console.log(this.$appName) } }) コンソールに「My App」と表示されます。とても簡単です! 2. インスタンスプロトタイプのスコープを設定するappName が で始まるのはなぜですか?これは重要ですか?ここには魔法はありません。 始まり? これは重要ですか? ここには魔法はありません。始まり?これは重要ですか?ここには魔法はありません。 プロパティがすべての Vue インスタンスで使用可能になるのは単純な規則です。そうすることで、既に定義されているデータ、メソッド、計算されたプロパティとの競合を回避できます。 Vue.prototype.appName = '私のアプリ' では、次のコードの出力は何でしょうか。 新しいVue({ データ: { // おっと、`appName` も定義したインスタンス プロパティ名です。 appName: '他のアプリの名前' }, beforeCreate: 関数() { console.log(このアプリ名) }, 作成: 関数 () { console.log(このアプリ名) } }) インスタンスの作成後に this.appName がデータによって上書きされるため、ログには最初に「My App」、次に「The name of some other app」が表示されます。インスタンス プロパティのスコープを設定することで、このような事態の発生を防ぎます。これを回避するために、インスタンス プロパティのスコープを指定するなど、必要に応じて独自の規則を使用することもできます。 これを回避するために、インスタンス プロパティのスコープを指定するなど、必要に応じて独自の規則を使用することもできます。必要に応じて、_appName や ΩappName などの独自の規則を使用して、プラグインや将来のプラグインとの競合を回避することもできます。 3. グローバル変数の登録と使用各コンポーネントは vue インスタンスです。Vue.prototype は変数を追加しますが、これは各コンポーネントにプロパティを追加するだけです。このプロパティの値はグローバルではありません。 // メイン.js 'vue' から Vue をインポートします './App' から App をインポートします './router' からルーターをインポートします './store' からストアをインポートします Vue.config.productionTip = false Vue.prototype.$appName = 'main' 新しいVue({ el: '#app', 店、 ルーター、 コンポーネント: { アプリ }, テンプレート: '<App/>', }) // すべてのコンポーネントにプロパティ $appName を登録し、初期値 'main' を割り当てると、すべてのコンポーネントが this.$appName を使用してこの変数にアクセスできます。 // コンポーネントに値が割り当てられていない場合、初期値は 'main' になります // ホーム.vue <テンプレート> <div> <div @click="changeName">名前を変更</div> <div @click="gotoTest2">テスト2に移動</div> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ 方法:{ 名前を変更する(){ this.$appName = "test1" }, gotoTest2(){ this.$router.push('/about') } } } </スクリプト> // について.vue <テンプレート> <div> <div>test2 の {{this.$appName}}</div> </div> </テンプレート> ホームで名前の変更をクリックし、About にジャンプします。Test2 では About にまだ main が表示されています。 Vue.prototype.$appName = { 名前: 'main' } 後で、this.$appName.nameを使用して対応する値を変更して参照します。aboutを入力すると、test2にtest1が表示されます。 4. プロトタイプメソッドのコンテキストJavaScript では、プロトタイプ メソッドはインスタンスのコンテキストを取得します。つまり、これを使用して、データ、計算されたプロパティ、メソッド、またはインスタンスで定義されているその他のものにアクセスできます。 // メイン.js Vue.prototype.$reverseText = 関数 (プロパティ名) { this[プロパティ名] = this[プロパティ名] 。スプリット('') 。逆行する() 。参加する('') } // 対応するコンポーネント <script> エクスポートデフォルト{ データ() { 戻る { メッセージ: 'こんにちは' } }, 作成された() { console.log(this.message) // => "こんにちは" this.$reverseText('メッセージ') console.log(this.message) // => "olleH" } } </スクリプト> 5. 応用例5.1 Axiosの紹介npm インストール vue-axios --save npm install qs.js --save //その機能は、json形式をデータに必要な形式に直接変換することです // メイン.js 'vue' から Vue をインポートします 'axios' から axios をインポートします 'qs' から qs をインポートします Vue.prototype.$axios = axios //グローバル登録、使用方法: this.$axios Vue.prototype.qs = qs // グローバル登録、使用方法: this.qs // 対応するコンポーネント <script> エクスポートデフォルト{ データ(){ 戻る { ユーザーID:666、 トークン:''、 } }, 作成された(){ this.$axios({ メソッド:'post', url:'api', data:this.qs.stringify({ //バックエンドに送信されるデータはこちら userId:this.userId, トークン:this.token, }) }).then((response) =>{ //ここではES6構文が使用されています console.log(response) //リクエストが正常にデータを返しました}).catch((error) =>{ console.log(error) //リクエストが失敗したときに返されるデータ}) } } </スクリプト> Vue.prototype、Vue.component、Vue.use の違い1. Vue.プロトタイプ複数の場所で使用する必要があり、グローバルスコープを汚染したくない場合は、このように定義すると、すべての Vue インスタンスで使用できるようになります。 'echarts' から echarts をインポートします Vue.prototype.$echarts = echarts 2. vue.コンポーネントコンポーネントをグローバルに登録し、 'base/loading' から myLoading をインポートします。 Vue.component('myLoading',myLoading); 3. Vue.useこれもグローバル登録です。コンポーネントとの違いは、受信したパラメータにインストール メソッドが必要であることです。これは、サードパーティのプラグインを登録するためによく使用されます。 'element-ui' から ElementUI をインポートします。 Vue.js の ElementUI 要素をオーバーライドします。 Vue における Vue.prototype の詳しい使い方についてはこれで終わりです。Vue.prototype の使い方に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Ubuntu 16.04 で FTP サーバーを構築するチュートリアル
>>: mysql のファイル mysql-bin.000001 とは何ですか? 削除できますか?
今日は、さまざまなブラウザでのデフォルト要素のマージン値が何であるかという問題について説明しました。...
目次1. 親子コンポーネント通信2. クロスレベルコンポーネント通信1. レイヤーごとに値を渡す2....
私が現在の仕事の面接を受けたとき、リーダーが真剣にこう言っていたのを覚えています。「今の世の中はイン...
Linux/Mac の MySQL パスワードを忘れた場合はどうすればいいですか?心配しないでくださ...
1. MySQLソフトウェアをインストールするMySQL 公式 Yum リポジトリ、MySQL バー...
最近、プロジェクトに取り組んでいるときに、Web ページ上のキーワードを強調表示する機能に遭遇しまし...
序文: Mybatis の特殊文字処理、Mybatis の xml ファイル内の特殊文字の処理、ここ...
<br />幅と高さが適応するオリジナルの 9 グリッド レイアウトをベースに、ネットワ...
取引特性1. アトミック性: トランザクションの開始後、すべての操作が完了するか、まったく実行されな...
ポートが占有されているかどうかは、これまで一度もわかりませんでした。多くの人に尋ねて、ようやくわかり...
目次SQL文を挿入する前にレコードが既に存在するかどうかを確認するSQL挿入時の判断の簡単なコレクシ...
1. 複合主キーいわゆる複合主キーとは、テーブルの主キーが複数のフィールドで構成され、ビジネス上の意...
目次序文接続管理追加の接続管理ポート要約する序文皆さんの多くは、次のようなエラー メッセージに遭遇し...
目次序文解決ツールの紹介仕組み使用制限使用上の注意使用例いくつかのパラメータの説明出力例Tencen...
1. instanceofの使用法instanceof演算子は、コンストラクター関数のprototy...