当前位置:首页 > 文章 > 正文内容

一个更简单的方法来传递大量的props

廖万里2年前 (2022-11-19)文章81561

今天我们就来学习一下Vue技术小册子,用更简单的方式传递大量的道具。这些例子是通过使用Vue3来演示的,这当然也适用于Vue2。让我们言归正传,假设我们有一个用户信息组件,如下所示:

<template>
  <div>
    <p>姓名:{{ name }}</p>
    <p>职业:{{ job }}</p>
    <p>爱好:{{ hobby }}</p>
  </div></template><script setup lang="ts">
  import { ref } from 'vue';

  defineProps({    name: String,    job: String,    hobby: String
  });</script><style scoped></style>

这个组件接收三个参数,即用户名、职业和爱好。这三个字段的相应值显示在模板中。然后,在父组件中,引入用户组件,声明一个userInfo对象,然后将这三个参数传递给用户组件,如下所示:

<script setup lang="ts">
  import User from 'Components/User.vue';  const userInfo = reactive({    name: '羊羊羊',    job: '前端开发工程师',    hobby: '踢足球、运动跑步'
  });</script><template>
  <User :name="userInfo.name" :job="userInfo.job" :hobby="userInfo.hobby" /></template><style scopedc lang="scss"></style>

运行结果如下:

一个更简单的方法来传递大量的props

如果这里传递给用户组件的参数超过三个,我们需要在用户组件上逐个定义吗?显然效率不是很高。

其实我们可以用v-bind来解决这个问题。它会自动将所有属性绑定到组件,并作为道具传递给组件。V-bind官方文件:cn.vuejs.org/api/built-i…

转型后:

  <User v-bind="userInfo" />

运行,效果如下:

一个更简单的方法来传递大量的props

同样,如果用户组件中有很多事件需要处理,我们也可以使用v-on来解决这个问题。首先,我们在用户组件中自定义两个事件。当点击名字和爱好时,我们向父组件发送updateUserName,updeteUserHobby事件,如下所示:

<template>
  <div>
    <p @click="handleUserName">姓名:{{ name }}</p>
    <p>职业:{{ job }}</p>
    <p @click="handleUserHobby">爱好:{{ hobby }}</p>
  </div></template><script setup lang="ts">
  import { ref } from 'vue';  const props = defineProps({    name: String,    job: String,    hobby: String
  });  // 定义 emit
  const emit = defineEmits(['updateUserName', 'updateUserHobby']);  const handleUserName = () => {
    emit('updateUserName', props.name);
  };  const handleUserHobby = () => {
    emit('updateUserHobby', props.hobby);
  };</script><style scoped></style>复制代码

以下省略,搬运太累

本文链接:https://www.kkkliao.cn/?id=257 转载需授权!

分享到:

添加博主微信共同交流探讨信息差网赚项目: 19528888767 , 请猛戳这里→点我添加

版权声明:本文由廖万里的博客发布,如需转载请注明出处。

“一个更简单的方法来传递大量的props” 的相关文章

“双11”,如何守住钱袋子?

“双11”,如何守住钱袋子?

“双十一”快到了,“剁手”的大斧已高高举起。购物车收藏83件,有的商品开启定价预售模式小姐姐的化妆品要不少钱呀,也不知比平时便宜多少最近几天,同事们都在热议“双十一”。 今年的“双十一”跟以往相比有新变化,比如,缩短预售时间、扩容购物车、差价一键退,不少平台还从晚上8点开始销售等。自从2009年开始...

日本拆无人机后曝光:核心芯片来自美国,大疆会走上华为的老路吗?

日本拆无人机后曝光:核心芯片来自美国,大疆会走上华为的老路吗?

大疆无人机在日被拆解,确认核心部件源自美国?在无人机领域盛传一句话:“世界无人机只分为两类,大疆和其他‘玩具机’”。因此,作为入选了胡润全球独角兽企业的大疆无人机公司,一直是美国、日本等多个国家高精尖企业眼中的“香饽饽”。他们试图攻克大疆的操作原理,更致力于找到突破中国无人机第一的弱点。2020年大...

专访中凝科技90后董事长王天赋:7年打造气凝胶“小巨人”,未来3年冲刺上市

专访中凝科技90后董事长王天赋:7年打造气凝胶“小巨人”,未来3年冲刺上市

本文来源:时代周报 作者:黄嘉祥气凝胶是世界上密度最小的固体,被誉为可以改变世界的多功能新材料,这条超百亿级别的新赛道正在崛起,入局者越来越多。90后“创二代”王天赋正是气凝胶赛道的创业者之一,他在2015年创办了深圳中凝科技有限公司(下称“中凝科技”),带领团队研制气凝胶,在全球首创气凝胶无氯常压...

圆周率已经算到了62.8万亿位,再算下去有什么意义?

圆周率已经算到了62.8万亿位,再算下去有什么意义?

综述大家知道,圆的周长与直径的比值就是圆周率,用希腊字母表示也就是π。π是一个无限不循环的无理数,在小数点之后存在着无限多个数字,并且不会循环。令人惊讶的是,就算已经证明了π的小数点之后的数字是无穷的,仍然有不少科学家们想要把它继续算下去。最新成果显示,瑞士的一名研究人员利用一台超级计算机,耗时19...

一个月收入三四万是什么感觉?

一个月收入三四万是什么感觉?

海员蒙哥10月17日关注除了飘还是飘,如今负债20多万!2019年我投资了30万做了美业连锁,最高峰一个月赚了7万,真得是穷人乍富,走路都是飘得!最直观的变化就是以前抽8块钱得紫树,从那以后最低都是天叶,自己抽得加给人散得一天得三包,就喜欢听别人说一句,你抽这么好得烟啊!自尊心得到了强大的满足!以前...

你是怎么发现你的同事很有钱的?

你是怎么发现你的同事很有钱的?

躲在舒适区09月10日关注曾经就职的一家公司里有一个文员,大专学历,胖乎乎的很可爱,一看就没什么心机。穿着打扮也看不出什么特别的地方。文员工作嘛,也没看出来她有什么特长。结果公司有一次外事活动,随行的翻译临时生病,反正公司大部分人都会些英语,就没额外配置翻译。外商最后和公司财务交流时沟通有些不顺,这...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。