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

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

廖万里3年前 (2022-11-19)文章81573

今天我们就来学习一下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 转载需授权!

分享到:

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


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

双11想买台便宜的512GB手机,真的就这么难吗?

双11想买台便宜的512GB手机,真的就这么难吗?

双十一可能是很多小伙伴换手机的时间,但是换手机的时候却面临了一个问题,现在手机基本都是128GB起步,但是很多人买手机又想买大内存版本,而大版本的又有些贵,这样就导致本来预算是旗舰机,结果只能换中端机,其实大可不必,因为有这么几款512GB的大内存手机,价格不贵,而且性能也很强,一起看看吧。第一款:...

六零后已经渐渐老了,都是独生子女家庭,以后怎样养老?

六零后已经渐渐老了,都是独生子女家庭,以后怎样养老?

我是68年的,今年54岁,我也只有一个女儿,以后怎么养老的问题,我在十年前就开始准备了,所以我的养老问题我现在一点都不担心,因为我早已经准备好了。我从上班到退休一直在银行储蓄柜工作。工作小柜台,人生大舞台,在几十年的工作中我见识了形形色色的人,也见过很多老人特别是没有退休金的老人晚年凄苦的生活。所以...

netcore有好用的word(docx)、excel(xlsx)及pdf 处理库吗?

如题,所有需求都基于开源免费库基础word主要用来做模版替换,能有docx转pdf最好excel主要用来导入导出,能生成导入模版文件,能设置每个导入模版的下拉框数据(能从数据库读数据)pdf主要用来添加水印文件或者图片。在此感谢分享...

国产办公软件崛起,金山WPS月活用户已超5.7亿;Meta指责苹果夺走部分广告收入;Python 3.11 发布|极客头条

206 篇文章201 订阅订阅专栏「极客头条」—— 技术人员的新闻圈!CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。整理 | 梦依丹出品 | CSDN(ID:CSDNnews)一分钟速览新闻点!国产办公软件崛起 金山WPS月活用户已超5.7亿美团...

“双十一”部分手机价格先涨价再降价?券后价格反而比平时贵

“双十一”部分手机价格先涨价再降价?券后价格反而比平时贵

记者 宗智10月24日晚上八点,“双十一”的“先锋号角”已然奏响。从“光棍节”到全民参与的消费狂欢日,从最初的27个商家到现在来自全球各地的29万个品牌,互联网电商一路高歌猛进,其规模与影响力不断扩大,连续创造了13年“神话”。然而,随着消费者生活水平的提升,平台补贴活动走向日常化,低价早已不再是“...

蔚来将上线“跨级换电”:支持 100kWh 电池,日租 68 元

蔚来将上线“跨级换电”:支持 100kWh 电池,日租 68 元

IT之家 10 月 27 日消息,蔚来宣布试点“跨级换电”服务,即标准续航电池包用户可以选择更换为长续航电池包,按日计费,先用后付。而长续航电池包用户也可以换为标准续航电池包,可按日补偿积分。70/75 度升至 100 度,每日使用费 68 元;100 度降至 70/75 度,每日补偿 200 积分...

发表评论

访客

看不清,换一张

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