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

vue3.0父子组件传值(vue3.0 父子组件传值)p 1 定义 defineEmits 子组件自定义事件 在父组件调用该自定义事件进行数据传递 p 父组件 const changeData data any gt fData name data name lt Child ChangeData amp ldquo

大家好,我是讯享网,很高兴认识大家。



 <p>1.定义defineEmits子组件自定义事件&#xff0c;在父组件调用该自定义事件进行数据传递&#xff1a;</p> 

讯享网

      父组件:

        const changeData = (data: any) =&gt; {

               fData.name = data.name;

        };

      &lt;Child @ChangeData=“changeData”&gt;&lt;/Child&gt;

       &lt;div&gt;我的名字{{ fData.name }}&lt;/div&gt;

 子组件:

 &lt;script setup lang=“ts”&gt;

  import { ref,reactive } from ‘vue’;

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

  const emits =defineEmits([‘ChangeData’]);

  //修改父组件数据

  const changeCurrentData=()=&gt;{

    emits(‘ChangeData’,{name:‘王飞’})

  }

&lt;/script&gt;

&lt;template&gt;

    &lt;div&gt;

        &lt;el-button type=“danger” @click=“changeCurrentData”&gt;修改王飞的名字&lt;/el-button&gt;

    &lt;/div&gt;

&lt;/template&gt;

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

  父组件:

const childRef = ref&lt;IProps&gt;({} as IProps);

//修改子组件的数据

const ChangeName2 = () =&gt; {

  childRef.value.Cdata.age = “20”;

  childRef.value.chageName(“王飞2”);

};

 &lt;ChildExponse ref=“childRef”&gt;&lt;/ChildExponse&gt;

&lt;el-button type=“danger” @click=“ChangeName2”&gt;修改子组件&lt;/el-button&gt;

  子组件:


讯享网

&lt;script setup lang=“ts”&gt;

import { ref, reactive } from “vue”;

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

const chageName = (value: string) =&gt; {

  Cdata.name = value;

};

defineExpose({Cdata,chageName})

&lt;/script&gt;

&lt;template&gt;

  &lt;div&gt;姓名: {{ Cdata.name }}&lt;/div&gt;

  &lt;div&gt;年龄: {{ Cdata.age }}&lt;/div&gt;

&lt;/template&gt;

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

  父组件:

      

const childRef2 = ref&lt;IProps&gt;({} as IProps);

provide(“name”,“wangfei”);

provide(“age”,“40”);

子组件:

&lt;script setup lang=“ts”&gt;

import { ref, reactive,inject } from “vue”;

  const name =inject(‘name’);

  const age =inject(‘age’);

&lt;/script&gt;

&lt;template&gt;

  &lt;div&gt;

    &lt;div&gt;姓名: {{ name }}&lt;/div&gt;

    &lt;div&gt;年龄: {{ age }}&lt;/div&gt;

  &lt;/div&gt;

&lt;/template&gt;

小讯
上一篇 2025-04-30 16:22
下一篇 2025-04-21 19:37

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/190951.html