目次
Vue3 コンポーネントは値を渡します (props)
親コンポーネントは子コンポーネントに値を渡します
子コンポーネントから親コンポーネントに渡される値
ホームページ ウェブフロントエンド Vue.js vue3でコンポーネント間で値を転送する方法

vue3でコンポーネント間で値を転送する方法

May 22, 2023 am 08:58 AM
vue3

Vue3 コンポーネントは値を渡します (props)

親コンポーネントは子コンポーネントに値を渡します

親コンポーネント内:

1.Reflection

# を導入します。

vue3でコンポーネント間で値を転送する方法

##2. 渡す属性と属性値を定義

vue3でコンポーネント間で値を転送する方法##3. サブコンポーネントに属性属性を渡すvue ページ内

vue3でコンポーネント間で値を転送する方法

属性を渡す

: 子コンポーネントに渡される名前 (カスタマイズ) = "で定義された属性名に対応します親コンポーネント"

子コンポーネント内:

4. 親コンポーネント

props: {
 showDialogVisible: Boolean
},
setup() {
 return {
 }
}
ログイン後にコピー

からプロパティを受け取ります。コンポーネント

setup(props) {
    // 可以打印查看一下props传过来的属性以及属性的值
	console.log(props);
	
	return {
		props
	}
}
ログイン後にコピー
# を登録します。 ##6. 子コンポーネント内 このページはこの属性を使用します

#親コンポーネントが子コンポーネントに値を渡すことは完了です。 vue3でコンポーネント間で値を転送する方法

サブコンポーネントは親コンポーネントに値を渡します (通常)

    サブコンポーネント内:
  • Since vueデータ転送は
  • 一方向のデータ フロー
であり、子コンポーネントには親コンポーネントによって渡されたデータを変更する権限がありません。親コンポーネントに元のデータの変更を要求し、エミットを使用することのみが可能です。親コンポーネントに変更するよう通知します。

1. 子コンポーネントで変更する親コンポーネントのプロパティ (またはメソッド) の値を定義します。

setup(props,context) {
    context.emit('setShow', false);
	
	return {
	}
}
//也可以:es6解构赋值取到emit
//setup(props,{emit}) {
//    emit('setShow', false);
//	
//	return {
//	}
//}
ログイン後にコピー

context.emit(‘親コンポーネントのカスタム プロパティ名 ’、属性値);

    親コンポーネント内:
  • 2. ページ上で受け取る 子コンポーネントに渡されたカスタム プロパティ名は、対応するプロパティ (メソッド) にバインドされます。

#親コンポーネントは、子コンポーネントに値を渡します。 ! vue3でコンポーネント間で値を転送する方法

親コンポーネント メソッドをアタッチします:

子コンポーネントは値を親コンポーネント (v-model) に渡します vue3でコンポーネント間で値を転送する方法

If

子コンポーネントから親コンポーネントに渡される値

は、親コンポーネント

から子コンポーネント に渡される値とまったく同じであり、この属性に対して双方向バインディングを直接実行できます。 注: このセクションを読む前に、最初のセクションを読むことをお勧めします: 親コンポーネントが子コンポーネントに値を渡す

    上記の子コンポーネント内:
  • #1. props から取得したプロパティを直接変更します

vue3でコンポーネント間で値を転送する方法

    親コンポーネント上:
  • #2. 親ページ内の子コンポーネントにバインド

値の転送が完了しました! vue3でコンポーネント間で値を転送する方法

vue3 コンポーネント間の値の転送とイベント処理

私もこの記事を書く前にネットで情報を探しましたが、情報が非常に少ないことがわかったので、自分で記録しておきます。

プロジェクトの要件は、各ページにトップ ナビゲーション バーとリターン イベントを追加する必要があることです。

最初にサブコンポーネント コードを記述し、ナビゲーションを作成します。コンポーネント ディレクトリ内の .vue ファイル: vue3でコンポーネント間で値を転送する方法

サブコンポーネント nav.vue ファイルの内容

<template>
   <div>
    <el-affix position="top" :offset="0">
        <div class="nav">
          <span @click="backGo"><img  src="/static/imghw/default1.png"  data-src="../assets/back.png"  class="lazy"  / alt="vue3でコンポーネント間で値を転送する方法" >返回</span>
          <p>{{title}}</p>
        </div>
    </el-affix>
  </div>
</template>
<script setup>
import{ defineProps } from "vue"
const props =defineProps({ //子组件定义接收父组件传过来的值
       title:String 
})
//点击返回事件
const backGo = () => {
    history.back()
}
</script>
<style scoped>
.nav{width: 100%;height:.6rem;display: flex;align-items: center;justify-content: center;text-align: center;position: relative;background-color: #ffffff;border-bottom: 1px solid #f0f0f0;}
.nav span{position: absolute;height:100%;left: .2rem;top: 0;display: flex;align-items: center;color: #8a8a8a;}
.nav span img{width: .32rem;}
</style>
ログイン後にコピー

親コンポーネント aboutus.vue ファイル:

<template>
  <div class="wrap">
      <Nav title="关于我们"></Nav> <!--记住这里第一个字母大写哦-->
        <div class="lists">
          <ul class="abus">
              <li><p><router-link to="/company">公司介绍</router-link></p></li>
              <li><p><router-link to="/privacy">隐私政策</router-link></p></li>
              <li><p><router-link to="/useragree">用户协议</router-link></p></li>
          </ul>
      </div>
  </div>
</template>
<script setup>
import Nav from &#39;@/components/nav.vue&#39; 
 
</script>
ログイン後にコピー

サブコンポーネントを導入するときは、最初の文字を大文字にすることを忘れないでください。 !

それは簡単ではありませんか!

以下はサブコンポーネントの値の転送を紹介します

同じことをサブコンポーネント nav.vue でテストし、コードを直接入力します:

<template>
    <div>
    <el-affix position="top" :offset="0">
    <div class="nav">
      <span @click="backGo"><img  src="/static/imghw/default1.png"  data-src="../assets/back.png"  class="lazy"  / alt="vue3でコンポーネント間で値を転送する方法" >返回</span>
      <p>{{title}}</p>
    </div>
  </el-affix>
    </div>
</template>
<script setup>
import{ defineProps ,defineEmits} from "vue"
const emits =defineEmits([&#39;getBackGo&#39;]) //注册父组件回调方法
const props =defineProps({
       title:String
})
const backGo = () => {
    // history.back()
    emits("getBackGo","传个值给父组件!")
}
</script>
<style scoped>
.nav{width: 100%;height:.6rem;display: flex;align-items: center;justify-content: center;text-align: center;position: relative;background-color: #ffffff;border-bottom: 1px solid #f0f0f0;}
.nav span{position: absolute;height:100%;left: .2rem;top: 0;display: flex;align-items: center;color: #8a8a8a;}
.nav span img{width: .32rem;}
</style>
ログイン後にコピー

見てみましょう親コンポーネント aboutus.vue の記述メソッドを見てください:

<template>
  <div class="wrap">
      <Nav title="关于我们" @getBackGo="getBackGoInfo"></Nav>
      <img  class="logo lazy"  src="/static/imghw/default1.png"  data-src="../../assets/logo.jpg"   / alt="vue3でコンポーネント間で値を転送する方法" >
      <div class="lists">
          <ul class="abus">
              <li><p><router-link to="/company">公司介绍</router-link></p></li>
              <li><p><router-link to="/privacy">隐私政策</router-link></p></li>
              <li><p><router-link to="/useragree">用户协议</router-link></p></li>
          </ul>
      </div>
  </div>
</template>
<script setup>
import Nav from &#39;@/components/nav.vue&#39;
const getBackGoInfo = (value) => {
    console.log(value)
}
 
</script>
ログイン後にコピー
効果は次のとおりです:

以上がvue3でコンポーネント間で値を転送する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

vue3 プロジェクトで tinymce を使用する方法 vue3 プロジェクトで tinymce を使用する方法 May 19, 2023 pm 08:40 PM

tinymce はフル機能のリッチ テキスト エディター プラグインですが、tinymce を vue に導入するのは他の Vue リッチ テキスト プラグインほどスムーズではありません。tinymce 自体は Vue には適しておらず、@tinymce/tinymce-vue を導入する必要があります。外国のリッチテキストプラグインであり、中国語版を通過していないため、公式 Web サイトから翻訳パッケージをダウンロードする必要があります (ファイアウォールをバイパスする必要がある場合があります)。 1. 関連する依存関係をインストールします npminstalltinymce-Snpminstall@tinymce/tinymce-vue-S2. 中国語パッケージをダウンロードします 3. スキンと中国語パッケージを導入します. プロジェクトのパブリック フォルダーに新しい tinymce フォルダーを作成し、

vue3+vite: src に画像を動的にインポートするために require を使用するときのエラーを解決する方法 vue3+vite: src に画像を動的にインポートするために require を使用するときのエラーを解決する方法 May 21, 2023 pm 03:16 PM

vue3+vite:src は、イメージとエラー レポートと解決策を動的にインポートするために require を使用します。vue3+vite は複数のイメージを動的にインポートします。vue3。TypeScript 開発を使用している場合、イメージを導入するために require のエラー メッセージが表示されます。requireisnotdefined は使用できません。 vue2 のような imgUrl:require(' .../assets/test.png') は、typescript が require をサポートしていないため、インポートされます。そのため、import が使用されます。解決方法は次のとおりです: awaitimport を使用します

Vue3 がマークダウンを解析し、コードのハイライトを実装する方法 Vue3 がマークダウンを解析し、コードのハイライトを実装する方法 May 20, 2023 pm 04:16 PM

Vue はブログ フロントエンドを実装しており、マークダウン解析を実装する必要があり、コードがある場合はコードのハイライトを実装する必要があります。 Vue には、markdown-it、vue-markdown-loader、marked、vue-markdown など、マークダウン解析ライブラリが多数あります。これらのライブラリはすべて非常に似ています。ここではMarkedが使用され、コード強調表示ライブラリとしてhighlight.jsが使用されます。 1. 依存ライブラリをインストールする vue プロジェクトの下でコマンド ウィンドウを開き、次のコマンド npminstallmarked-save//marked を入力して、マークダウンを htmlnpmins に変換します。

Vue3 でページの部分的なコンテンツを更新する方法 Vue3 でページの部分的なコンテンツを更新する方法 May 26, 2023 pm 05:31 PM

ページの部分的な更新を実現するには、ローカル コンポーネント (dom) の再レンダリングを実装するだけで済みます。 Vue でこの効果を実現する最も簡単な方法は、v-if ディレクティブを使用することです。 Vue2 では、v-if 命令を使用してローカル dom を再レンダリングすることに加えて、新しい空のコンポーネントを作成することもできます。ローカル ページを更新する必要がある場合は、この空のコンポーネント ページにジャンプしてから、再びジャンプします。 beforeRouteEnter ガードを空白のコンポーネントに配置します。元のページ。以下の図に示すように、Vue3.X の更新ボタンをクリックして赤枠内の DOM を再読み込みし、対応する読み込みステータスを表示する方法を示します。 Vue3.X の scriptsetup 構文のコンポーネントのガードには o しかないので、

vue3 プロジェクトをパッケージ化してサーバーに公開した後、アクセス ページが空白で表示される問題の解決方法 vue3 プロジェクトをパッケージ化してサーバーに公開した後、アクセス ページが空白で表示される問題の解決方法 May 17, 2023 am 08:19 AM

vue3 プロジェクトがパッケージ化され、サーバーに公開されると、アクセス ページに空白の 1 が表示されます。vue.config.js ファイル内の publicPath は次のように処理されます: const{defineConfig}=require('@vue/cli-service') module.exports=defineConfig({publicPath :process.env.NODE_ENV==='production'?'./':'/&

Vue3 の再利用可能なコンポーネントの使用方法 Vue3 の再利用可能なコンポーネントの使用方法 May 20, 2023 pm 07:25 PM

はじめに vue であれ、react であれ、複数の繰り返しコードに遭遇した場合、ファイルを冗長なコードの束で埋めるのではなく、これらのコードを再利用する方法を考えます。実際、vue と React はどちらもコンポーネントを抽出することで再利用を実現できますが、小さなコードの断片に遭遇し、別のファイルを抽出したくない場合は、それに比べて、React は同じファイル内で対応するウィジェットを宣言して使用できます。または、次のような renderfunction を通じて実装します。 constDemo:FC=({msg})=>{returndemomsgis{msg}}constApp:FC=()=>{return(

DefineCustomElement を使用して Vue3 でコンポーネントを定義する方法 DefineCustomElement を使用して Vue3 でコンポーネントを定義する方法 May 28, 2023 am 11:29 AM

Vue を使用してカスタム要素を構築する WebComponents は、開発者が再利用可能なカスタム要素 (カスタム要素) を作成できるようにする一連の Web ネイティブ API の総称です。カスタム要素の主な利点は、フレームワークがなくても、任意のフレームワークで使用できることです。これらは、異なるフロントエンド テクノロジ スタックを使用している可能性のあるエンド ユーザーをターゲットにする場合、または最終アプリケーションを使用するコンポーネントの実装の詳細から切り離したい場合に最適です。 Vue と WebComponents は補完的なテクノロジであり、Vue はカスタム要素の使用と作成に対する優れたサポートを提供します。カスタム要素を既存の Vue アプリケーションに統合したり、Vue を使用してビルドしたりできます。

Vue3 と Element Plus を使用して自動インポートを実装する方法 Vue3 と Element Plus を使用して自動インポートを実装する方法 May 22, 2023 pm 04:58 PM

1 はじめに 1.1 目的 ElementPlus は、パッケージ化されたファイルのサイズを大幅に削減するためにオンデマンド導入を使用します 1.2 最終効果は、components.d.ts ファイルを自動的に生成し、ファイルに導入します ElementPlus コンポーネントは、components.d を自動的に生成します。 ElementPlusAPI2 準備 ElementPlus をインストール#好きなパッケージ マネージャーを選択#NPM$npminstallelement-plus--save#Yarn$yarnaddelement-plus#pnpm$pnpminstallelement-plus3 を押します

See all articles