当前位置:网站首页 > Vue.js开发 > 正文

vue3.0父子组件传值(vue3.0 父子组件传值)



1.定义defineEmits子组件自定义事件,在父组件调用该自定义事件进行数据传递:

      父组件:

        const changeData = (data: any) => {

               fData.name = data.name;

        };

      <Child @ChangeData="changeData"></Child>

       <div>我的名字{{ fData.name }}</div>

 子组件:

 <script setup lang="ts">

  import { ref,reactive } from 'vue';

  //定义调用父组件的方法

  const emits =defineEmits(['ChangeData']);

  //修改父组件数据

  const changeCurrentData=()=>{

    emits('ChangeData',{name:'王飞'})

  }

</script>

<template>

    <div>

        <el-button type="danger" @click="changeCurrentData">修改王飞的名字</el-button>

    </div>

</template>

2.定义defineExpose暴露子组件的数据和方法,在父组件进行调用修改和传递给子组件

  父组件:

const childRef = ref<IProps>({} as IProps);

//修改子组件的数据

const ChangeName2 = () => {

  childRef.value.Cdata.age = "20";

  childRef.value.chageName("王飞2");

};

 <ChildExponse ref="childRef"></ChildExponse>

<el-button type="danger" @click="ChangeName2">修改子组件</el-button>

  子组件:

<script setup lang="ts">

import { ref, reactive } from "vue";

const Cdata = reactive({ name: "王飞",age:"19" });

const chageName = (value: string) => {

  Cdata.name = value;

};

defineExpose({Cdata,chageName})

</script>

<template>

  <div>姓名: {{ Cdata.name }}</div>

  <div>年龄: {{ Cdata.age }}</div>

</template>

3.利用provide,injiect来传递数据,这个父组件可以一直传给它所有的子组件:

  父组件:

      

const childRef2 = ref<IProps>({} as IProps);

provide("name","wangfei");

provide("age","40");

子组件:

<script setup lang="ts">

import { ref, reactive,inject } from "vue";

  const name =inject('name');

  const age =inject('age');

</script>

<template>

  <div>

    <div>姓名: {{ name }}</div>

    <div>年龄: {{ age }}</div>

  </div>

</template>

到此这篇vue3.0父子组件传值(vue3.0 父子组件传值)的文章就 介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • Vue安装脚手架(vue2.0脚手架的安装)2025-07-07 21:00:06
  • js数组方法slice(js数组方法some)2025-07-07 21:00:06
  • vue 关闭eslint(vue关闭eslint警告)2025-07-07 21:00:06
  • vue 插槽(vue 插槽的作用是什么?)2025-07-07 21:00:06
  • pcie5.0显卡供电线(显卡pcie供电线怎么插)2025-07-07 21:00:06
  • vue2官网中文文档下载(vue官方文档中文下载)2025-07-07 21:00:06
  • pcie5.0电源和ATX3.0(pcie3.0和sata)2025-07-07 21:00:06
  • vue 插槽传值(vue插槽怎么传值)2025-07-07 21:00:06
  • cjson库内存泄露(console.log内存泄露)2025-07-07 21:00:06
  • 安装vue报错(vuex安装 报错)2025-07-07 21:00:06
  • 全屏图片