首頁 > 軟體

Vue3父子通訊方式及Vue3插槽的使用方法詳解

2023-01-26 18:01:07

在Vue3中父子通訊方式

Vue3父傳子(props)

父元件如下:

<template>
  <div class="about">
    <h1>This is an about page</h1>
    <children :num="num" age="30"></children>
  </div>
</template>
<script>
import children from "../components/children.vue";
import { ref } from "vue";
export default {
  setup() {
    let num = ref("《nanchen》");
    return {
      num,
    };
  },
  components: {
    children,
  },
};
</script>

子元件如下:

<template>
  <div>我是子元件 我的父元件值為:{{ yy }}</div>
</template>
 
<script>
import { ref } from "vue";
export default {
  name: "Vue3appChildren",
  props: {
    num: {
      type: Number,
    },
  },
  setup(props) {
    let yy = ref(props.num);
    return {
      yy,
    };
  },
 
  mounted() {},
 
  methods: {},
};
</script>
 
<style lang="scss" scoped>
</style>

setup中的引數分別有:

props:值為物件,包含:元件外部傳遞過來,且元件內部宣告接收了的屬性。
context:上下文物件
attrs: 值為物件,包含:元件外部傳遞過來,但沒有在props設定中宣告的屬性, 相當於 this.$attrs。
slots: 收到的插槽內容, 相當於 this.$slots。
emit: 分發自定義事件的函數, 相當於 this.$emit

props中可以接收父元件傳遞給子元件的引數 

Vue3子傳父({emit})

父元件:

<template>
  <div class="about">
    <h1>This is an about page</h1>
    <children :num="num" age="30" @test="showHello"></children>
  </div>
</template>
<script>
import children from "../components/children.vue";
import { ref } from "vue";
export default {
  setup() {
    let num = ref("《nanchen》");
    function showHello(value) {
      console.log(value);
    }
    return {
      num,
      showHello,
    };
  },
  components: {
    children,
  },
};
</script>

子元件

<template>
  <div @click="aboutClick">我是子元件 我的父元件值為:{{ yy }}</div>
</template>
 
<script>
import { ref } from "vue";
export default {
  name: "Vue3appChildren",
  props: {
    num: {
      type: Number,
    },
  },
  setup(props, { emit }) {
    let yy = ref(props.num);
    function aboutClick() {
      emit("test", "你好你好"); // 子傳父
    }
    return {
      yy,
      aboutClick,
    };
  },
 
  mounted() {},
 
  methods: {},
};
</script>
 
<style lang="scss" scoped>
</style>

點選div效果如下:

Vue3插槽

    <children :num="num" age="30" @test="showHello">
      <h1>南辰,Hello</h1>
    </children>
<template>
  <div @click="aboutClick">我是子元件 我的父元件值為:{{ yy }}</div>
  <slot></slot>
</template>

具名插槽的寫法

<slot name="aabb"></slot>
	<HelloWorld>
		<template v-slot:aabb>
			<span>NanChen,你好</span>
		</template>
		 <!-- <template #aabb>
			<span>NanChen,你好</span>
		</template> -->
	</HelloWorld>

到此這篇關於Vue3父子通訊方式及Vue3插槽的使用方法詳解的文章就介紹到這了,更多相關Vue3父子通訊方式及Vue3插槽的使用內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com