論理階層化vue3を使用してプロジェクトを開発する場合、 異なる地域から事業を分離エクスポートデフォルト{ 設定 () { {queryDo、addDo、delDO、EditDo} を allFun() にします。 queryDo(); //クエリインターフェースが呼び出されます} } // これはページ関数 allFun(){ の領域 A のロジックです console.log('私はallFun関数内の直接のステートメントであり、実行されます') 関数queryDo(){ console.log('インターフェースをクエリし、バックエンドデータを呼び出しています') } 関数addDo(){ console.log('私は初心者です') } 関数delDO(){ console.log('削除しました') } 関数EditDo(){ console.log('私は編集インターフェースです') } {queryDo、addDo、delDO、EditDo} を返します } </スクリプト> これを実行する利点
このようなシナリオにどう対処するかビジネスロジックを書くときは、 <スクリプト> エクスポートデフォルト{ 設定 () { // ここで使用される構造はエリア A です。let {queryDo,addDo,delDO,EditDo}=aAreaAllFun(); // エリア B let {querHander}=bAreaAllFun(); {queryDo、addDo、delDO、EditDo、querHander} を返します } } // これはAエリアページ上の特定のエリアのロジックです。function aAreaAllFun(){ 関数queryDo(){ console.log('私はエリアAのクエリインターフェースです') } 関数addDo(){ console.log('私は初心者です') } 関数delDO(){ console.log('削除しました') } 関数EditDo(){ console.log('私は編集インターフェースです') } {queryDo、addDo、delDO、EditDo} を返します } // これはエリアBのビジネスロジックです。関数bAreaAllFun(){ // エリア A のクエリ インターフェイスを直接呼び出します。aAreaAllFun().queryDo(); 関数querHander(){ console.log("エリア B のクエリ インターフェイス") } {querHander} を返す } </スクリプト> 使用していますが 最適化<スクリプト> エクスポートデフォルト{ 設定 () { // これはAエリアページの特定のエリアのロジックです。let {addDo,delDO,EditDo}=aAreaAllFun() // これは B エリア ページ上の特定のエリアのロジックです。let {querHander}=bAreaAllFun(); {queryDo、addDo、delDO、EditDo、querHander} を返します } } // パブリッククエリインターフェース 多くの領域では関数 queryDo(){ が使用される可能性があります console.log('私は地域のクエリインターフェースです、引き出されました') } // これはAエリアページ上の特定のエリアのロジックです。function aAreaAllFun(){ 関数addDo(){ console.log('私は初心者です') } 関数delDO(){ console.log('削除しました') } 関数EditDo(){ console.log('私はエディターインターフェースです') } {addDo,delDO,EditDo} を返します } // これはエリアBのビジネスロジックです。関数bAreaAllFun(){ // パブリック クエリ インターフェイス queryDo() を直接呼び出します。 関数querHander(){ console.log("エリア B のクエリ インターフェイス") } {querHander} を返す } </スクリプト> 必ずしもセットアップ関数にreactiveを書く必要はない多くの友人は、reactive はセットアップ関数内に記述する必要があると考えています。実際はそうではありません。必要な場所に記述できます。たとえば、次の aAreaAllFun 関数内で reactive を使用できます。 <テンプレート> <div> <h2>名前: {{ areaData.info.name}}</h2> <h2>年齢: {{ areaData.info.age}}</h2> <h2>性別: {{ areaData.info.sex}}</h2> </div> </テンプレート> <スクリプト> '@vue/reactivity' から { reactive } をインポートします。 エクスポートデフォルト{ 設定 () { {addDo,areaData}=aAreaAllFun() とします。 {addDo,areaData} を返します } } // これはAエリアページ上の特定のエリアのロジックです。function aAreaAllFun(){ areaData = リアクティブ({ 情報: 名前:「張三」 年齢:20歳 性別: '男性' } }) 関数addDo(){ console.log('私は初心者です') } {addDo,areaData} を返します } </スクリプト> ページに値を直接表示する方法上記の例では、名前、年齢、性別を実装したいので、areaData.info.xxxが必要です。 <テンプレート> <div> <h2>名前: {{ name}}</h2> <h2>年齢: {{ age}}</h2> <h2>性別: {{ sex}}</h2> </div> <button @click="ChangeCont">値を変更</button> </テンプレート> <スクリプト> 'vue' から { reactive,toRefs } をインポートします。 エクスポートデフォルト{ 設定 () { {名前、年齢、性別、ChangeCont}=aAreaAllFun() とします。 {名前、年齢、性別、ChangeCont} を返します } } // これはAエリアページ上の特定のエリアのロジックです。function aAreaAllFun(){ areaData = リアクティブ({ 情報: 名前:「張三」 年齢:20歳 性別: '男性' } }) 関数ChangeCont(){ // この方法で値を変更すると、ビューは応答しなくなります。[エラー] //エリアデータ.info={ // 名前:'Li Si', //年齢:21, // 性別:'男性' // } // ビューを正しく更新するにはこれで OK です [ok] エリアデータ情報名='123' エリアデータ.info.age=12 areaData.info.sex='男性' } // toRefs はレスポンシブ オブジェクトを通常のオブジェクトに変換できます。 // この共通オブジェクトのすべての値は参照です。 // ref になるので、値を使用する必要があります。 {ChangeCont,...toRefs(areaData.info)} を返します。 } </スクリプト> プロジェクトにおけるvue3のロジック抽出とフィールド表示に関するこの記事はこれで終わりです。より関連性の高いvue3のロジック抽出とフィールド表示コンテンツについては、123WORDPRESS.COMで過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Mysql 8.0.18 ハッシュ結合テスト (推奨)
>>: portainer を使用してリモート docker に接続するチュートリアル
最近、Linux に Aphace、mysql、php をインストールするときに多くの問題に遭遇しま...
派生テーブルについてメイン クエリに派生テーブルが含まれている場合、または SELECT ステートメ...
データベース (MySQL) を準備します。すでに MySQL をお持ちの場合は、これを無視できます...
エラー: Connection to blog0@localhost failed. [08001]...
W3Cschoolではこのように説明しています<meta> 要素は、検索エンジン向けの説...
Docker はコンテナを作成するときに、デフォルトでブリッジ ネットワークを使用し、IP アドレス...
目次序文始める序文サーバーのデフォルトの SSH ポート番号は通常 22 であるため、ほとんどのユー...
1. ul タグには、Mozilla ではデフォルトでパディング値がありますが、IE ではマージン値...
仮想マシンはホストマシンにインストールされます。 CPU とメモリはホスト マシンと共有する必要があ...
概要オンラインサービスへのアクセス中に 500 または 502 エラーが発生した場合、緊急処理とトラ...
原因不明のMySqlサービス消失の解決策先ほど、MySQL-Front が突然 MySql を開けな...
序文:場合によっては、MySQL に接続されたセッションが異常終了することが多く、エラー ログに「通...
1. 圧縮と包装の概要一般的な圧縮ファイルウィンドウズ .rar .zip .7z Linux .z...
Vue プロジェクトで mock.js を使用する開発ツールの選択: Vscode 1. コマンドラ...
最近、ビジネス側から、一部のユーザー情報の挿入に失敗し、エラー メッセージが「不正な文字列値:&qu...