vue3 のさまざまな構文形式を比較したサンプルコード

vue3 のさまざまな構文形式を比較したサンプルコード

デフォルトのテンプレートメソッドはvue2に似ており、コンポーネント内のセットアップ関数を使用します。

// 親コンポーネント <テンプレート>
  <div>
    <div>
      <div>{{都市名}}</div>
      <button @click="changeReactive">リアクティブを変更する</button>
      <button @click="handleFather">親コンポーネントをクリックします</button>
    </div>
    <Child ref="childRef" @handleBtn="handleBtn" @testClick="testClick" city="成都" />
  </div>
</テンプレート>

<スクリプト>
'vue' から { ref、onMounted、toRefs、reactive } をインポートします。
'./Child.vue' から Child をインポートします。

エクスポートデフォルト{
  コンポーネント:
    子供
  },
  設定 () {
    定数ハンドルボタン = (val) => {
      console.log('btn', val)
    }

    const testClick = (val) => {
      コンソールログ('testClick', val)
    }

    定数childRef = ref(null)

    定数ハンドルファーザー = () => {
      childRef.value.observed.a = 666 //親コンポーネントが子コンポーネントの値を変更します console.log('子コンポーネントを取得する方法', childRef.value)
      // サブコンポーネントは expose を定義する必要があります。定義しない場合は、返す必要があります。対応する関数は通常、直接返されません。ページで使用されていない場合は、必要なメソッドまたは値のみを公開します。 }

    // セットアップ関数メソッドを介して記述し、ページで使用されるメソッドと値を返す必要があります // reactve によって定義された値の場合、分解によってページにレンダリングされた値はレスポンシブではないため、toRefs を介して変換してから分解する必要があります // ...toRefs(testReactive)
    
    const testReactive = リアクティブ({
      都市: '北京'、
      年齢: 22
    })

    定数changeReactive = () => {
      testReactive.city = '重慶'
    }

    戻る {
      ハンドルボタン、
      テストクリック、
      ハンドル父、
      ...toRefs(テストリアクティブ)、
      変化反応、
      子参照
    }
  }
}
</スクリプト>


//サブコンポーネント <テンプレート>
  <div>
    {{観察された.a}}
    <button @click="handleBtn">クリック</button>
  </div>
</テンプレート>

<スクリプト>
'vue' から {defineProps、defineEmits、defineEmit、defineExpose、reactive } をインポートします。

エクスポートデフォルト{
  小道具: {
    都市: 文字列
  },

  /* これは主に ctx.attrs がこの属性にアクセスできないようにするために設定されます */
  /* props に設定された一部のプロパティは attrs には表示されません*/

  出力: ['testClick'], // これを設定する目的は、attrs に対応するカスタム メソッドがないことを確認することです。
  // peops がサブコンポーネントに設定されている場合、対応する値は attrs ではアクセスできません // arrts は vue3 で機能が強化されており、カスタム メソッド、クラス、スタイルがマウントされています
  //vue2 では、カスタム メソッドは $listeners にマウントされます。vue3 では、$listeners は削除されています。setup (props, ctx) {
    const { 公開、放出 } = ctx
    定数ハンドルボタン = () => {
      コンソールログ('btn', ctx)
      出力('testClick', 666)
    }

    const 観察 = 反応的({
      1: 1
    })

    関数 clickChild (値) {
      観測値.a = 値
    }

    さらす({
      clickChild, //カスタムメソッドを公開、親コンポーネントの呼び出しを監視//子コンポーネントの値を公開})

    戻る {
      観察された、
      ハンドルボタン
    }
  }
}
</スクリプト>

スクリプトタグ<script setup>にセットアップを記述します。

// 親コンポーネント <テンプレート>
  <div>
    <button @click="handleFather">父親をクリック</button>
    <Child ref="childRef" @handleBtn="handleBtn" @testClick="testClick" city="成都" />
  </div>
</テンプレート>

<スクリプトの設定>
'vue' から { ref } をインポートします
'./Child.vue' から Child をインポートします。
// 戻りエクスポートページで使用されていないメソッドと値のこの書き方では、Vue 上の対応する定義を直接分解する必要があります。
定数childRef = ref(null)

定数ハンドルボタン = (val) => {
  console.log('btn', val)
}

const testClick = (val) => {
  コンソールログ('testClick', val)
}

定数ハンドルファーザー = () => {
  console.log('子コンポーネントを取得するメソッド', childRef.value)
  childRef.value.testFatherClick() //親コンポーネントは子コンポーネントのメソッドを呼び出します //子コンポーネントはdefineExposeを通じて対応するメソッドを公開します}

</スクリプト>


// サブコンポーネント <テンプレート>
  <div>
    <button @click="handleBtn">クリック</button>
  </div>
</テンプレート>

<スクリプトの設定>
'vue' から {defineProps、defineEmits、defineExpose、reactive } をインポートします。

const props = defineProps({
  都市: 文字列
})

const エミット = defineEmits(['handleBtn', 'testClick'])

定数ハンドルボタン = () => {
  // console.log('btn', props, 出力)
  出力('testClick', 12)
}

const testFatherClick = () => {
  console.log('テスト親コンポーネントが子コンポーネントをクリック')
}

const 観察 = 反応的({
  1: 1
})

defineExpose({ //メソッドを親グループに公開する testFatherClick,
  観察された
})

</スクリプト>

<スタイルスコープ>
</スタイル>

jsx によるレンダリングは react に非常に近く、私が最もお勧めする方法でもあります。jsx は ts もサポートしていますが、.vue ファイルは tsx ほどサポートされていません。

// 親コンポーネント import { ref, reactive } from 'vue'
'./Child.jsx' から Child をインポートします。

const 父 = {
  設定() {
    // jsx で定義された ref は、ページで使用するときに .value を介してアクセスする必要があります。const city = ref('北京')

    定数changeCity = () => {
      city.value = '杭州'
    }

    定数childRef = ref(null)

    const handelFather = (追加) => {
      // また、コンポーネントで expose メソッドを公開することで // city.value = 'Hangzhou'
      console.log('childRef', childRef.値)
    }

    const testChildClick = (val) => {
      console.log('テストサブコンポーネントのクリック', val)
    }

    戻り値 () => {
      戻る (
        <div>
          <div>{city.value}</div>
          <button onClick={changeCity}>都市を変更</button>
          <button onClick={handelFather}>親をクリック</button>
          <子 testChildClick={testChildClick} ref={childRef} />
        </div>
      )
    }
  }
}

エクスポートデフォルト 父


//サブコンポーネント import { ref, reactive } from 'vue'

定数子 = {
  小道具: {
    testChildClick: 関数
  },

  セットアップ(props, { 発行, 公開 }) {
    const { testChildClick } = プロパティ
    const testFatherClick = () => {
      console.log('テスト親コンポーネントが子コンポーネントをクリック')
    }

    定数handelBtn = () => {
      // emitting('testChildClick') // これは jsx では動作しません // console.log('props', props)
      testChildClick('親コンポーネントに値を返す')
      // このメソッドは、関数を介して親コンポーネントに値を渡して子コンポーネントに関数を渡す唯一の方法です。}

    さらす({
      テスト父クリック
    })

    戻り値 () => {
      戻る (
        <div>
          <button onClick={handelBtn}>子コンポーネントは値を親コンポーネントに渡します</button>
        </div>
      )
    }
  }
}

デフォルトの子をエクスポート

要約する

これで、vue3 のさまざまな構文形式の比較に関するこの記事は終了です。より関連性の高い vue3 構文形式の比較コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

<<:  Linux でジャンクファイルをエレガントに削除する方法

>>:  MySQLはライブラリ内の主キーなしでテーブルインスタンスコードを素早く取得します

推薦する

OpenShift のクイックインストールの詳細な手順

OpenShift 3.9 の最新バージョンを体験する最も早い方法。準備 [root@host ~]...

ウェブデザインのグラフィック構成と組版機能の紹介

すべてには基礎が必要です。家を建てるには基礎が必要です。方程式を解くには、まず九九を覚える必要があり...

英語の単語の出現頻度を数えるtrコマンドの魔法

置換を削除したり文字列を削除したりできる tr コマンドは、誰もがよく知っています。 英語では、英語...

MySQL データベース開発の 36 の原則 (要約)

序文これらの原則は実際の戦闘から要約されています。あらゆる原則の背後には血なまぐさい教訓があるこれら...

jQueryメソッド属性の詳細な説明

目次1. jQueryの紹介2. jQueryセレクター2.1 5つの基本セレクタ2.2 4種類の関...

Tomcat8はcronologを使用してCatalina.Outログを分割します

背景tomcat によって生成された catalina.out ログ ファイルが分割されていない場合...

HTML と CSS に関する基本的なメモ (フロントエンドでは必読)

HTMLに触れた当初はレイアウトにいつもテーブルを使っていましたが、とても面倒で見た目も悪かったの...

フォーム内の無効なフォームフィールドの値を送信する方法 サンプルコード

フォーム内のフォーム フィールドが無効に設定されている場合、フォーム フィールドの値は送信されません...

Nexus を使用して Docker リポジトリを作成する方法

公式の Docker レジストリを使用して作成されたウェアハウスでは、イメージを削除してもデフォルト...

MySQL Strict Modeの知識ポイントの詳細な説明

I. 厳密モードの説明MySQL 5.0 以降の厳密モード (STRICT_TRANS_TABLES...

フォーム要素属性の読み取り専用と無効の使用の比較

1) 適用範囲:読み取り専用:input[type="text"],input[...

MySQLインデックスに関する重要な面接の質問をいくつか共有します

序文インデックスは、データベース内の 1 つ以上の列の値を並べ替え、データベースが効率的にデータを取...

データ URI スキームを使用して Web ページに画像を埋め込む方法の紹介

データ URI スキームを使用すると、HTML、CSS、Javascript などで使用できるインラ...

JavaScript はマウスのドラッグを実装して div のサイズを調整します

この記事では、マウスをドラッグしてdivのサイズを調整するJavaScriptの具体的なコードを参考...

MySQL の組み込み関数 find_in_set を使用した効率的なあいまい検索の詳細な説明

一般的に使用される方法は次の 4 つです。 1.locate()メソッドを使用する一般的な使用法: ...