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

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

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

今天我们就来学习一下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的大内存手机,价格不贵,而且性能也很强,一起看看吧。第一款:...

同样是系统为什么有的叫OS有的叫UI

同样是系统为什么有的叫OS有的叫UI

大家有没有注意到现在手机系统虽然主要分iOS和安卓两大阵营,但如果从叫法的后缀上来区分的话其实是分为OS和UI。那么,你有没有想过为什么有些手机的系统后缀是OS?有些系统的后缀是UI呢?他们之间的区别在于哪些呢?同样是系统为什么有的叫OS有的叫UI1、字面意思不同OS的英文全称为Operation...

不打游戏只看视频,骁龙和天玑竟然能拉开这么大差距?

不打游戏只看视频,骁龙和天玑竟然能拉开这么大差距?

事情是这样的。最近托尼有位同事因为之前被使用三星 4nm 工艺的骁龙 8 Gen 1 折腾怕了,所以他在把原来的旧手机卖了之后,转手换了台搭载天玑 9000 的手机。一开始他对这台手机可以说非常满意,打游戏时发热终于没那么严重了,然而时间一长,他发现手机电量貌似掉的有点快,续航并没有想象中那么顶。本...

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

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

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

开始“反扑”了?中国院士正式宣布,厉害的不只有华为

开始“反扑”了?中国院士正式宣布,厉害的不只有华为

随着中国的这些年的不断发展,中国在各方都取得了很大的成就,现在的中国已经发生了翻天覆地的变化。在生活上。我们进入了电商时代,进入了移动支付时代;在科技上,我们进入了智能互联网时代,即将迎来的是全新的5G时代,还有很多很多中国制造都是值得我们骄傲的。特别值得提及的就是,现在中国制造已经成为了我们的一个...

微信一定要关闭的6个设置

微信一定要关闭的6个设置

微信里面的个人隐私信息必须要注意,尤其是微信里面设置里面的一些功能,都应该要及时关闭,以免自己就的个人隐私遭到暴露。1,自动扣费/免密支付项目点击我→服务→点击钱包→选择支付设置→关闭自动续费、免密支付,这两项不需要的。2,关闭自动下载点击我→设置→点击通用→选择照片/视频→关闭自动下载。如果不关闭...

发表评论

访客

看不清,换一张

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