Vue3 + TypeScript 学習1. 環境設定1.1 最新のVue scaffoldingをインストールするnpm インストール -g @vue/cli 糸グローバル追加 @vue/cli 1.2 Vue3プロジェクトを作成するvue プロジェクト名を作成 1.3 既存の Vue 2 プロジェクトを Vue 3 にアップグレードする vue タイプスクリプトを追加 2. Vue3への攻撃2.1 Vue 2 の制限
2.2 Vue 3がVue 2の制限をどう解決するか
[Vue3 で複合関数を記述し、Compositon Api setUp を使用して解決する]
3. Vue3 コンポジション API3.1 コンポジションAPIについてVue3 では、 したがって、Vue2 の方法を引き続き使用してコンポーネントを記述できます。 3.2 コンポジションAPIを使用する場合TypeScriptは大規模なコンポーネントの記述をサポートしており、 4. コンポジションAPIの基本的な基礎4.1 setup は、コンポーネントの状態を構成するために使用される別の実装です。 セットアップで定義された状態。テンプレートで使用する場合はメソッドが返す必要があります。 知らせ:
4.2 ref レスポンシブ変数の作成Vue2 では、データ内でレスポンシブ変数を直接定義し、テンプレート内でその変数を使用します。 コンポジション API を使用する場合は、ページで使用する前に、セットアップで ref を使用してレスポンシブ変数を作成し、それを返す必要があります。 使用:
これによって得られる利点は次のとおりです。
<テンプレート> <div> <h1>{{タイトル}}</h1> </div> </テンプレート> <スクリプト> 'vue' から {ref,defineComponent} をインポートします。 エクスポートデフォルトdefineComponent({ 設定 () { // レスポンシブ変数を定義する const title = ref('フロントエンド自習コミュニティ') // 変数にアクセス console.log(title.value) // 変数を返す return {title} } }) </スクリプト> 4.3 ライフサイクルComposition API ライフサイクル フックは、Vue 2 のオプションのライフサイクル フックと同じ名前を持ちますが、Composition API を使用する場合は、on、onMounted というプレフィックスが付きます。 以下のコードには 2 つのライフフックがマウントされています。どちらが最初に実行されると思いますか? 設定 () { // レスポンシブ変数を定義する const title = ref('フロントエンド自習コミュニティ') コンソール.log(タイトル) // 変数を返す function getTitle(){ console.log(タイトル.値) } // ページが読み込まれています onMounted(getTitle) {タイトル}を返す }, マウント() { console.log('マウントされた実行順序をテストします') }, 4.4 ウォッチセットアップの変更に反応するために時計を使用する 1. watch をインポートします。import { watch } from 'vue' 2. ウォッチを直接使用します。ウォッチは3つのパラメータを受け入れます
'vue' から {wathc} をインポートします // レスポンシブ変数を定義する const num = ref(0) // レスポンシブ変数を更新する function changeNum(){ 数値++ } // wathc は応答変数を監視します watch( num,(新しい値, 古い値) => { console.log(`newValue は: ${newValue}、--------oldValue は: ${oldValue}`) } ) 4.5 計算これも vue からインポートされ、computed 関数は、computed の最初の引数として渡された getter のようなコールバックの出力への読み取り専用のリアクティブ参照を返します。新しく作成された計算変数の値にアクセスするには、ref の場合と同じように .value プロパティを使用する必要があります。 numの値が変わると、numsの値は*3になります。 'vue' から {ref,computed} をインポートします。 定数 num = ref(0) // 数値を更新 関数changeNum(){ 数値++ } // num の変更を監視する const nums = computed(() =>{ 数値 * 3 を返す }) 5. セットアップ5.1 2つのパラメータを受け入れるprops: 親コンポーネントによって渡されるプロパティ。setup` 関数の props はレスポンシブです。データが更新されると更新されますが、ES6 の分解は props をレスポンシブにしないため使用できません。 コンテキスト: 3つのコンポーネント
小道具:{ オブジェクト:{ タイプ:オブジェクト } }, セットアップ (props,{attrs,slots,emit}) { コンソール.log(属性) console.log(スロット) console.log(出力) コンソールログ(props.obj) } 5.2 コンポーネント コンポーネントが
6. ライフサイクル
7. コンポーネント間で値を転送する
レスポンシブな更新を設定するにはどうすればいいですか?
親コンポーネント: "vue" から provide、defineComponent、ref、reactive をインポートします。 <テンプレート> <息子/> </テンプレート> <スクリプト> "vue" から provide、defineComponent、ref、reactive をインポートします。 エクスポートデフォルトdefineComponent({ 設定() { const father = ref("私の親コンポーネント"); const 情報 = リアクティブ({ id: 23, メッセージ: 「フロントエンド自習コミュニティ」、 }); 関数changeProvide(){ info.message = 'テスト' } provide('父',父) 提供する('情報',情報) {changeProvide} を返します。 } }) </スクリプト> サブコンポーネント: <テンプレート> <div> <h1>{{情報メッセージ}}</h1> <h1>{{父親データ}}</h1> </div> </テンプレート> <スクリプト> 'vue' から {provide、defineComponent、ref、reactive、inject} をインポートします。 エクスポートデフォルトdefineComponent({ 設定 () { const 父データ = 注入('父') const info = inject('info') {fatherData,info} を返します } }) </スクリプト> 8. VueでTypeScriptを使用する際のヒント8.1 インターフェース制約制約属性
インタフェース ページングクエリフィールド属性タイプの検証: エクスポートデフォルトインターフェースqueryType{ ページ: 番号、 サイズ: 数、 名前: 文字列、 年齢: 番号 } コンポーネントで使用: '../interface/Home' から queryType をインポートします。 データ() { 戻る { クエリ:{ ページ:0, サイズ:10, 名前:'テスト', 年齢: 2 } クエリタイプとして } }, 8.2 コンポーネントはdefineComponentを使用して定義されますこの方法でTypeScriptはVueコンポーネントオプションの型を正しく推測します 'vue' から {defineComponent} をインポートします。 エクスポートデフォルトdefineComponent({ 設定(){ 戻る{ } } }) 8.3 リアクティブ型宣言 デフォルトインターフェース製品をエクスポートする { 名前:文字列、 価格:数量、 アドレス:文字列 } '@/interface/Product' から製品をインポートします。 'vue' から {reactive} をインポートします const product = reactive({name:'xiaomi 11',price:5999,address:'北京'}) として製品 {fatherData,info,product} を返します 以上がVue3 + TypeScript開発概要の詳しい内容です。Vue3 + TypeScriptについてさらに詳しく知りたい方は、123WORDPRESS.COM内の他の関連記事もぜひご注目ください! 以下もご興味があるかもしれません:
|
<<: VMware ESXi6.7 の簡単なセットアップ(画像とテキスト付き)
>>: MySQL のレイテンシ問題とデータフラッシュ戦略プロセスの分析
背景:インターフェイスを提供する Flask プロジェクトがあり、これは Docker コンテナを使...
目次コンストラクタインスタンスとプロトタイプの関係プロトタイププロパティ属性またはメンバーの検索原則...
たとえば、新しいテーブルを作成したり、既存のテーブルのデータを更新したりすると、これらのイベントは、...
以下に、一般的な MySQL コマンドをいくつか示します。 -- データベース サービスを開始します...
この記事の主な内容は次のとおりです。 1. 閉じるボタン2.キャレット3. フローティングを素早く設...
アンカーポイントの設定<a name="トップ"></a>...
この記事の例では、古典的なマインスイーパゲームを実装するためのjsの具体的なコードを参考までに共有し...
スワップを無効にするサーバーがデータベース サービスまたはメッセージ ミドルウェア サービスを実行し...
目次はじめるデータストレージサーバーを構成するRedis セキュリティの管理Redisインストールの...
目次アプリケーションシナリオアイデアプロジェクト構造全体的なプロジェクト構造webpack パッケー...
それは何ですか? GNU Parallel は、1 台以上のコンピュータでコンピューティング タスク...
目次クラス void のポイントES6 矢印関数ヴュートファイvue-cli非同期と同期実行と展開ヒ...
この記事は、参考のためにMySQL 8.0.19のインストールと設定のグラフィックチュートリアルを記...
この記事ではjQueryを使用して、階段のスライド効果を実装し、フロアをスクロールし、フロアボタンを...
MySQL のバージョンは、Enterprise Edition と Community Editi...