父传子:

父传子:父组件直接把要传递的数据写在子组件标签身上,子组件通过 defineProps 接收父组件传递过来的数据,之后该数据即可在子组件内部使用。

parents:
<script setup>
  import {ref} from 'vue'
  import Child from './Child.vue'

  const res=ref('hello vue3!')
</script>
<templete>
  <h1>我是父组件,我要传递给父组件的数据是{{res}}</h1>
  <Child :parentData="res"></Child>
</templete>
Child.vue:
<script setup>
  defineProps(['parentData'])
</script>
<templete>
  <h2>我是子组件</h2>
  <h5>我的父组件传过来的数据{{parentData}}</h5>
</templete>

子传父:

子传父:在父组件中,也就是子组件的标签身上定义自定义事件,该事件的作用就是接收子组件传递过来的值,然后进行一些操作;在子组件中,通过defineEmits方法,参数是一个数组或者对象,该方法返回一个箭头函数,这个函数需要传递参数,第一个参数是事件类型(事件名称),第二个及以后的参数都表示要传递给父组件的数据

 parent.vue:
<script setup>
import { ref } from 'vue'
import Child from './Child.vue'

const msg = ref('hello world!')

const customHandler = (val) => {
  msg.value = val
}
</script>

<template>
    <h1>我是父组件</h1>
    <pre>我的数据等会要被子组件改变了:{{ msg }}</pre>
    <Child :parentData="msg" @my-event="customHandler"></Child>
</template>

Child.vue
<script setup>
defineProps(['parentData'])
const $emit = defineEmits(['my-event'])
const msg = 'hello vue!'

const handlerClick = () => {
  $emit('my-event', msg)
}
</script>

<template>
    <hr />
    <h2>我是子组件</h2>
    <pre>我是父组件传递过来的数据:{{ parentData }}</pre>
    <h2>点击下方按钮改变父组件的 hello world! 的值</h2>
    <button @click="handlerClick">click me!</button>
</template>

参考来自:https://juejin.cn/post/7234810590875795516
 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐