文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Vue3组件传值方式是什么

2023-07-02 16:51

关注

这篇文章主要介绍了Vue3组件传值方式是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue3组件传值方式是什么文章都会有所收获,下面我们一起来看看吧。

父子组件传值 props

和 vue2 一样,vue3 也可以使用 props 进行父组件传值给子组件,这个就不多说了直接上代码。

父组件

<template>  <div>    <div class="father">      <h2>这是父组件</h2>      <h3>父组件的名字:{{boy.name}}</h3>    </div>    <hello-world :msg="msg" :boy="boy" @change="btn"></hello-world>  </div></template><script>import HelloWorld from "./components/HelloWorld.vue";import { ref, reactive } from "vue";export default {  name: "App",  components: {    HelloWorld  },  setup() {    const boy = reactive({      name: "我是????????.",      age: 10    });    const msg = ref("这是一条信息");    const btn = val => {      console.log(val);      alert(val);    };    return { boy, msg, btn };  }};</script><style scoped>.father {  background-color: aquamarine;}</style>

子组件

<template>  <div class="son">    <h2>这是子组件</h2>    <h3>这是父组件传进的数据: {{msg}}</h3>    <h3>这是父组件传进的数据: {{boy.name}}</h3>    <button @click="btn">传给父组件数据</button>  </div></template><script>import { toRefs } from "vue";export default {  name: "HelloWorld",  props: {    msg: String,    boy: Object  },  setup(props, { emit }) {    console.log(props);    const p = toRefs(props);    const msg = p.msg;    const boy = p.boy;    const btn = () => {      const news = "我是子组件传进的值";      emit("change", news);    };    return { msg, boy, btn };  }};</script><style scoped>.son {  background-color: bisque;}</style>

保存查看效果。

Vue3组件传值方式是什么

上面就是 props 传值的基本用法。

祖孙组件传值 provide 和 inject

这个其实和 vue2 的写法是一模一样的。

直接上代码!!

父组件

<template>  <div>    <div class="father">      <h2>这是父组件</h2>      <h3>名字:{{boy.name}}</h3>      <h3>年龄:{{boy.age}}</h3>    </div>    <hello-world></hello-world>  </div></template><script>import HelloWorld from "./components/HelloWorld.vue";import { reactive, provide } from "vue";export default {  name: "App",  components: {    HelloWorld  },  setup() {    const boy = reactive({      name: "我是????????.",      age: 10    });    provide("boy", boy); // 往子孙组件传值    return { boy };  }};</script><style scoped>.father {  background-color: aquamarine;}</style>

子组件

<template>  <div class="son">    <h2>这是子组件</h2>    <h3>这是父组件传进的数据: {{boy.name}}</h3>    <h3>这是父组件传进的数据: {{boy.age}}</h3>  </div></template><script>import { toRefs, inject } from "vue";export default {  name: "HelloWorld",  setup() {    const boy = inject("boy"); // 子孙组件接收值    return { boy };  }};</script><style scoped>.son {  background-color: bisque;}</style>

刷新看一下效果。

Vue3组件传值方式是什么

好的,我们可以看到子组件可以顺利拿到父组件传进来的数据值。

父组件中点击按钮向子组件传值

就是使用 ref 来获取dom 然后操作里面的参数和方法。

父组件

<template>  <div>    <div class="father">      <h2>这是父组件</h2>      <h3>名字:{{boy.name}}</h3>      <h3>年龄:{{boy.age}}</h3>      <button @click="btn">传值</button>    </div>    <hello-world ref="hello" ></hello-world>  </div></template><script>import HelloWorld from "./components/HelloWorld.vue";import { reactive, ref } from "vue";export default {  name: "App",  components: {    HelloWorld  },  setup() {    const boy = reactive({      name: "我是????????.",      age: 10    });    const hello = ref();    function btn() {      hello.value.init(boy); // 调用子组件的方法,把boy对象传进去    }    return { boy, btn, hello };  }};</script><style scoped>.father {  background-color: aquamarine;}</style>

子组件

<template>  <div class="son">    <h2>这是子组件</h2>    <h3>这是父组件传进的数据: {{boy.name}}</h3>    <h3>这是父组件传进的数据: {{boy.age}}</h3>  </div></template><script>import { reactive, toRefs } from "vue";export default {  name: "HelloWorld",  setup() {    let boy = reactive({      name: "ed.",      age: 11    });    // 提供给父组件调用的方法    const init = val => {      boy.name = val.name;      boy.age = val.age;    };    return { init, boy };  }};</script><style scoped>.son {  background-color: bisque;}</style>

Vue3组件传值方式是什么

关于“Vue3组件传值方式是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Vue3组件传值方式是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯