vue3----ref はコンポーネント インスタンスを取得します

1. コンポーネントインスタンスを取得する際、refの前にコロンを書かないでください。

ref を通じて取得されたコンポーネントのプロパティまたはメソッドは、サブコンポーネントによって返される必要があることに注意してください。

詳細は以下の通り

<!--templateteb タグの内容-->

<!-- 注: ref の前にコロンを置くことはできません -->

    <h1 ref="title">私がタイトルです</h1>

    <child ref="child"></child>             

//setup関数内の内容

 // ref を通じてコン​​ポーネントのインスタンスを取得します

    const 子 = ref(null)

    const title = ref(null)

//マウント完了後にインスタンスを取得する

    onMounted(() => {

        console.log(child.value)

        console.log(タイトル.値)

        child.value.hh()

    })

 レンダリングは次のとおりです

 2. コンポーネントの紹介

フラグメントコンポーネント

vue2.x では、コンポーネント テンプレートにルート タグが必要ですが、vue3.x ではルート タグは必要なくなり、フラグメントが自動的に作成されます。

<テンプレート>

<div>私は説明です</div>

<h3>私がタイトルです</h3>

</テンプレート>

<スクリプト>

デフォルトの {} をエクスポートします。

</script>

<スタイル></スタイル>

 3.サスペンス要素

非同期コンポーネントをロードするときに、他のコンテンツをレンダリングします。

app.vue

<テンプレート>

  <div class="app">

    <サスペンス>

      <テンプレート v-スロット:デフォルト>

        <子供>

      </テンプレート>

      <テンプレート v-スロット:フォールバック>

        <h1>読み込み中...</h1>

      </テンプレート>

    </サスペンス>

  </div>

</テンプレート>

<スクリプト>

// import Child from './Child.vue'; // プログラムは起動時にパッケージ化されコンパイルされます

//defineAsyncComponent メソッドをインポートして、非同期読み込みコンポーネントを定義します

「vue」からインポート {defineAsyncComponent};

const Child =defineAsyncComponent(() => import("./Child.vue"));

デフォルトのエクスポート {

  コンポーネント: {

    子供、

  }、

};

</script>

<スタイルスコープ>

。アプリ {

  背景色: #eee;

  パディング: 30px;

}

</スタイル>

child.vue

<template>
<div class="child">我是子组件</div>
</template>
<script>
export default {};
</script>
<style scoped>
.child {
border: 2px solid red;
margin: 20px;
padding: 20px;
}
</style>

 4.テレポートコンポーネント

機能: 指定された DOM コンテンツを指定されたノードに移動します (指定されたノードにコンポーネントをマウントすると理解できます) 使用シナリオ: ポップアップ ボックスとプレーヤー コンポーネントの配置

ダイアログ.vue

<template>
<div class="dialog">我是弹框</div>
</template>
<script>
export default {};
</script>
<style scoped>
.dialog {
width: 300px;
height: 300px;
padding: 30px;
background-color: #fff;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
}
</style>

app.vue

<template>
  <div class="app">
    <h3>我是标题</h3>
    <h1>我是一级标题</h1>
    <div id="test">
      <!-- to属性的值为选择器,表示放在哪个节点下面 -->
      <teleport to="body">
        <Dialog />
      </teleport>
    </div>
  </div>
</template>
<script>
import Dialog from "./Dialog.vue";
export default {
  components: {
    Dialog,
  },
};
</script>
<style scoped>
.app {
  background-color: #eee;
  padding: 30px;
}
</style>

演算結果

 

おすすめ

転載: blog.csdn.net/m0_63237100/article/details/131454901