vue3 が誕生してからかなり時間が経ち、筆者も最近になって vue3 を学び始めました。 vue2 と比較すると、vue3 は記述面で大きな変更が加えられています。最も典型的な例は、vue3 が ref または reactive を通じてデータ応答性を実装していることです。 ref と reactive の登場により、Vue3 では親コンポーネントと子コンポーネント間で値を渡す方法も変更されました。 まずvue2でどのように書くかを見てみましょう 親コンポーネント: <!-- 親コンポーネント --> <テンプレート> <div> <children :title="タイトル" @getChildren="getChildren"></children> <div>子コンポーネントは次のように言います: {{ childrenAsk }}</div> </div> </テンプレート> <スクリプト> 「./children.vue」から子要素をインポートします。 エクスポートデフォルト{ データ() { 戻る { タイトル: 「私は親コンポーネントから渡された値です」 子供たちに質問: "" } }, メソッド: { getChildren(val) { this.childrenAsk = val } } } </スクリプト> サブコンポーネント: <!-- 子コンポーネント --> <テンプレート> <div> <div>親コンポーネントから渡された値: {{ title }}</div> <button @click="askToFather">クリックすると親コンポーネントに送信されます</button> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ 小道具: { タイトル: タイプ: 文字列 } }, データ() { 戻る { askMsg: 「これは親コンポーネントに言ったことです」 } }, メソッド: { 父親に尋ねる() { this.$emit("getChildren", this.askMsg) } } } </スクリプト> vue2 では、子コンポーネントから親コンポーネントへの値の転送は this.$emit を通じて実装されていますが、vue3 ではこれが存在しません。vue3 では、データと関数の両方が setup にカプセル化されていますが、vue3 はどのように実装しているのでしょうか? vue3 の setup は 2 つのパラメータを受け取ることがわかっています。最初のパラメータは props で、親コンポーネントから子コンポーネントに渡される props 値です。2 番目の値は context で、現在のコンテキスト オブジェクトを表します。これがわかったので、vue3 の親子コンポーネント値の転送を実装できます。 Vue3 の親子継承は、Vue2 の親子継承と同じです。ここでは詳しく説明しません。以下では、Vue3 の子親継承に焦点を当てます。 親コンポーネント <テンプレート> <div style="color: aqua">親コンポーネント</div> <div>子コンポーネントは次のように言います: {{ children_msg }}</div> <children :title="メッセージ" @listen="子供の話を聞きます"></children> {{ 価値 }} </テンプレート> <script lang="ts"> 「@/views/component_emit/children.vue」から子要素をインポートします。 「vue」から{defineComponent、ref}をインポートします。 エクスポートデフォルトdefineComponent({ コンポーネント: 子供たち、 }, 名前:「父」、 設定() { let msg = "私は親コンポーネントです" let children_msg = ref("") // ref の機能は応答性を実装することです。ref がなければ応答性を実装できません (参照データ型は reactive を使用します) listenToChildren = (val) => { とします。 children_msg.value = val // ref でラップされたデータを使用するには、.value の形式でその値にアクセスする必要があります} 戻る { メッセージ、 子供のメッセージ、 listenToChildren、 } }, }) </スクリプト> <スタイル></スタイル> サブコンポーネント: <テンプレート> <div style="color: brown">サブコンポーネント</div> <!-- 親子の伝達方法はvue2と同じです--> <div>親コンポーネントから渡される値は: {{ title }}</div> <button @click="sayToFather">親コンポーネントに話しかける</button> </テンプレート> <script lang="ts"> 「vue」から{defineComponent}をインポートします。 エクスポートデフォルトdefineComponent({ 名前:「子供」、 小道具: { タイトル: タイプ: 文字列、 }, }, セットアップ(プロパティ、コンテキスト) { // コンテキストの目的は、コンテキスト オブジェクトを取得することです。 // セットアップがsetup(props, {emit})と書かれている場合、次のコンテキストは省略できます。const sayToFather = () => { const ask = "私は子コンポーネントです。親コンポーネントと対話します" context.emit("listen", ask) } 戻る { 父に言う、 } }, }) </スクリプト> <スタイル></スタイル> 要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Mysql systemctl start mysqld によって報告されるエラーの解決策
>>: 入力要素 [type="file"] を使用する場合のスタイルのカスタマイズとブラウザの互換性の問題に関する議論
これらはすべて海外のE-WebTemplates WebサイトからのWebページテンプレートであり、...
WeChatアプレットでタブバーを設定すると、重要なコンテンツがブロックされ、iPhoneXなどの異...
前回の記事では、MySQL ステートメントの実行時間をチェックする 2 つの方法を紹介しました。今日...
XHTMLの img タグは、次のように記述する必要があります: <img alt="...
目次序文1. 文字列の長さを取得する2. 文字列の指定された位置の値を取得する(1) charAt(...
4つの実用的なVueカスタム指示1. Vドラッグ要件: マウスドラッグ要素アイデア:要素のオフセット...
CSS デフォルトスタイルをクリア通常の明確なデフォルト スタイル: *{ マージン:0; パディン...
目次序文解決具体的な実装満たすべき前提条件質問序文テーブルをよく使用します。データ量が多い場合は直接...
voidキーワードの紹介まず、void キーワードは JavaScript で非常に重要なキーワード...
コンテンツを携帯電話、タブレット、支援技術のユーザーから非表示にし、キーボードのユーザーにのみ表示す...
HTTPとは何ですか?ウェブサイトを閲覧したいときは、ブラウザのアドレス バーにウェブサイトのアド...
前面に書かれた多くの場合、現在のプロジェクトの状況とビジネスニーズに基づいて Nginx をインスト...
この記事では、jsでスライダーをドラッグする方法の具体的なコードを参考までに共有します。具体的な内容...
<br />関連記事: ハイパーリンクを表示して開く方法症状<br />ユー...
序文前回の記事では Hadoop をインストールしましたが、今回は Hbase をインストールします...