1. セットアップを始める次のコード関数を簡単に紹介します。 <テンプレート> <div>{{ countNum} } } } <button @click="handerFunc">ボタン</button> </テンプレート> <スクリプト> 'vue' から {ref} をインポートします エクスポートデフォルト{ 名前: 'アプリ'、 設定() { // この文は、変数 count が定義されていることを意味します。この変数の初期値は100です countNum = ref(100)とします。 // 結合された API では、メソッドを定義する場合、メソッド内で定義する必要はありません。関数handerFunc(){を直接定義するだけです // console.log(countNum); //countNum はオブジェクトです countNum.value += 10; } // 結合された API で定義されたメソッドまたは変数。外部で必要な場合は、return {aaa,func} return {countNum,handerFunc} を通じて公開する必要があります。 } } </スクリプト> 2. リアクティブの使用を理解するref 関数は、単純な型のデータの変更のみを監視できます。 <テンプレート> <div> <ul> <li v-for="satte.arr内のアイテム" :key="item.id"> {{item.name}} </li> </ul> </div> </テンプレート> <スクリプト> 'vue' から {reactive} をインポートします エクスポートデフォルト{ 名前: 'アプリ'、 設定(){ console.log("setUp は自動的に実行されます") // ref 関数に関する注意: // ref 関数は単純なデータ型のみを監視でき、複雑なデータ型 (配列、オブジェクト) は監視できません。 // リアクティブメソッドにはオブジェクトが含まれています let satte=reactive({ 編曲:[ {name:"Si Teng",id:'0011'}, {name:"アンダー・ザ・スキン",id:'0011'}, {name:"百年の約束",id:'0012'}, {name:"三生三世",id:'0013'}, ] }) 返す { satte } }, } </スクリプト> 3. リアクティブを使用するビューの削除 <テンプレート> <div> <ul> <li v-for="(item,index) in satte.arr" :key="index" @click="del(index)"> {{item.name}} </li> </ul> </div> </テンプレート> <スクリプト> 'vue' から {reactive} をインポートします エクスポートデフォルト{ 名前: 'アプリ'、 設定(){ satte = react({ 編曲:[ {name:"Si Teng",id:'0011'}, {name:"アンダー・ザ・スキン",id:'0011'}, {name:"百年の約束",id:'0012'}, {name:"三生三世",id:'0013'}, ] }) // クリックされた要素を削除する function del(index){ for(let i=0;i<satte.arr.length;i++){ if(インデックス==i){ satte.arr.splice(i,1) は、 } } } 戻り値 { satte, del} }, } </スクリプト> 4. 削除ロジックを分離する別モジュールを形成する <テンプレート> <div> <ul> <li v-for="(item,index) in satte.arr" :key="index" @click="del(index)"> {{item.name}} </li> </ul> </div> </テンプレート> <スクリプト> 'vue' から {reactive} をインポートします エクスポートデフォルト{ 名前: 'アプリ'、 設定(){ // onlyDelLuoJi() メソッドには配列とメソッドが含まれており、分解と同様です。let {satte,del }=onlyDelLuoJi(); // 外部に公開する return {sate,del} }, } 関数onlyDelLuoJi(){ satte = react({ 編曲:[ {name:"Si Teng",id:'0011'}, {name:"アンダー・ザ・スキン",id:'0011'}, {name:"百年の約束",id:'0012'}, {name:"三生三世",id:'0013'}, ] }) // クリックされた要素を削除する function del(index){ for(let i=0;i<satte.arr.length;i++){ if(インデックス==i){ satte.arr.splice(i,1) は、 } } } //データ satte とメソッド del を公開する return { satte,del } } </スクリプト> 5. 追加機能を実装するイベント間でパラメータを渡す <テンプレート> <div> <div> <input type="text" v-model="addobj.watchTv.name"> <button @click="addHander">追加</button> </div> <ul> <li v-for="(item,index) in satte.arr" :key="index" @click="del(index)"> {{item.name}} </li> </ul> </div> </テンプレート> <スクリプト> 'vue' から {reactive} をインポートします エクスポートデフォルト{ 名前: 'アプリ'、 設定(){ // onlyDelLuoJi() メソッドには配列とメソッドが含まれており、分解と同様です。let {satte,del }=onlyDelLuoJi(); // 渡されたパラメータ satte は、onlyDelLuoJi 関数で提供される satte です。パスlet { addobj,addHander }=OnlyaddHander(satte); // 外部に公開する return {sate,del,addobj, addHander} }, } //関数モジュールを追加する function OnlyaddHander(satte){ console.log('initialize add', satte) addobj = リアクティブ({ テレビを見る:{ 名前:""、 id:"" } }); 関数addHander(){ // 間違ったメソッドをリセットしてクリアします // satte.arr.push(addobj.watchTv) // addobj.watchTv.name = ""; // addobj.watchTv.id = ""; // 正しいアプローチ let oldobj = Object.assign({}, addobj.watchTv) satte.arr.push(oldobj) } 戻り値: { addobj, addHander } } //関数モジュール関数のみ削除DelLuoJi(){ console.log('初期化を削除') satte = react({ 編曲:[ {name:"Si Teng",id:'0011'}, {name:"アンダー・ザ・スキン",id:'0011'}, {name:"百年の約束",id:'0012'}, {name:"三生三世",id:'0013'}, ] }) // クリックされた要素を削除する function del(index){ for(let i=0;i<satte.arr.length;i++){ if(インデックス==i){ satte.arr.splice(i,1) は、 } } } //データ satte とメソッド del を公開する return { satte,del } } </スクリプト> 6 別々のファイルに抽出する追加と削除のロジックを別のファイルに分離したいと考えています。 「vue」から{reactive}をインポートします 関数OnlyaddHander(satte){ console.log('initialize add', satte) addobj = リアクティブ({ テレビを見る:{ 名前:""、 id:"" } }); 関数addHander(e){ // 間違ったメソッドをリセットしてクリアします // satte.arr.push(addobj.watchTv) // addobj.watchTv.name = ""; // addobj.watchTv.id = ""; // 正しいアプローチ let oldobj = Object.assign({}, addobj.watchTv) satte.arr.push(oldobj) e.preventDefault(); } 戻り値: { addobj, addHander } } エクスポートデフォルトOnlyaddHander アデル 「vue」から{reactive}をインポートします 関数onlyDelLuoJi() { console.log('初期化を削除') satte = react({ 編曲:[ {name:"Si Teng",id:'0011'}, {name:"アンダー・ザ・スキン",id:'0011'}, {name:"百年の約束",id:'0012'}, {name:"三生三世",id:'0013'}, ] }) // クリックされた要素を削除する function del(index){ for(let i=0;i<satte.arr.length;i++){ if(インデックス==i){ satte.arr.splice(i,1) は、 } } } //データ satte とメソッド del を公開する return { satte,del } } エクスポートデフォルトのみDelLuoJi メインファイル <テンプレート> <div> <div> <input type="text" v-model="addobj.watchTv.name"> <button @click="addHander">追加</button> </div> <ul> <li v-for="(item,index) in satte.arr" :key="index" @click="del(index)"> {{item.name}} </li> </ul> </div> </テンプレート> <スクリプト> 「./components/del」からonlyDelLuoJiをインポートします。 「./components/add」からOnlyaddHanderをインポートします。 エクスポートデフォルト{ 名前: 'アプリ'、 設定(){ // onlyDelLuoJi() メソッドには配列とメソッドが含まれており、分解と同様です。let {satte,del }=onlyDelLuoJi(); // パラメータを渡す let { addobj,addHander }=OnlyaddHander(satte); // 外部に公開する return {sate,del,addobj, addHander} }, } </スクリプト> 以上がvue3組み合わせAPIにおけるsetup、ref、reactiveの詳しい使い方です。vue組み合わせAPIの詳細については、123WORDPRESS.COMの他の関連記事もぜひご覧ください! 以下もご興味があるかもしれません:
|
<<: MySQL ALTERコマンドの知識ポイントのまとめ
>>: Mysql マスタースレーブレプリケーションの注意事項の説明
目次特徴保存戦略自己増加の決定自動増分値の変更実行プロセス問題点自動増分ロックロック戦略バッチ挿入の...
1. シナリオ表示Tomcat ログに次の例外情報が時々報告されます。何が起こっているのでしょうか...
ステップ1: ディープ「グラフィックドライバー」をインストールするdeepin v20にはデフォルト...
問題の説明最近、MySQL5.6.21サーバーがありました。アプリケーションがリリースされた後、同時...
OpenShift 3.9 の最新バージョンを体験する最も早い方法。準備 [root@host ~]...
1 背景最近、ZC706-ARM 開発ボードの Linux システムでコンパイル システム (apt...
Linux システムのシャットダウン コマンドは何ですか? Liangxu Tutorial Net...
この記事では、ネイティブ JS で実装されたデジタル時計エフェクトを紹介します。エフェクトは次のとお...
MIME タイプとは何ですか? 1. まず、ブラウザがコンテンツを処理する方法を理解する必要がありま...
この記事では、MySQL のトランザクション管理操作について説明します。ご参考までに、詳細は以下の通...
目次1要素オフセットシリーズ1.1 オフセットの概要1.2 オフセットとスタイルの違い視覚領域クライ...
この記事は、参考のためにMySQL 8.0.18のインストールと設定のグラフィックチュートリアルを記...
目次概要1. メニューとルーティング処理2. メニューとルートリスト3. ログインプロセスの処理概要...
最近、docker を学習していたときに、docker コンテナ内のネットワーク状態を照会するために...
<br />ウェブサイトのアクセス速度はウェブサイトのトラフィックに直接影響を及ぼし、ウ...