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

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

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

今天我们就来学习一下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” 的相关文章

如何让自己的努力更有效率?

如何让自己的努力更有效率?

收到了某个朋友发来的困惑咨询,抽象出来后整理出如下问题:为何自己很努力但觉得没有成长,做了很多事情却感觉没有核心竞争力,有浑身的精力不知道该往何处发力,应该如何破局?我是一名技术型产品经理,已经工作了3年,但是感觉自己陷入了成长迷茫期。 团队很重视技术,我花了很多时间来弥补技术知识,但是发现干不过研...

这才是华为手机正确的截屏方法,居然有9种不同的功能,太强大了

这才是华为手机正确的截屏方法,居然有9种不同的功能,太强大了

说起华为手机的截屏功能,很多朋友都会想到“指关节截屏”,这是华为手机特有的一种截屏方式。但是大家知道吗?其实除了“指关节截屏”,华为手机还有很多截屏的方法,有一些是非常实用的。平时我们发现一些有意义的画面、或者好看的视频,都可以用截屏的方式保存下来,因此多掌握几种截屏方法,还是很有帮助的!这篇文章就...

现在负债的人多吗?负债的朋友有何感受?

怎么说呢,我负债30,之前买股票,赔了,炒原油,赔了,后来开窗口,,也赔了,再后来,买YBK,也赔了,再后来买BTC,做了合约,去年313,爆仓了,彻底崩盘了,总之吧,所有的投资没挣钱,所有的本金,都是刷卡,借呗,微粒贷这么多年,工资也不高,一个月几千块钱除了还房贷,剩余都还贷款了,所以一直滚动,还...

win7系统复制文件到U盘提示权限不足的解决方法

win7系统复制文件到U盘提示权限不足的解决方法

  U盘是我们经常使用的移动存储设备,可是也会伴随着各种各样的烦恼。比如有的用户在win7系统中将一些文件复制到U盘里面的时候,系统却提示我们权限不足,很多用户都不懂怎么办,那么如果遇到这种情况我们应该怎么办呢?下面就来看小编是如何解决这种问题的。推荐:笔记本专用win7系统下载1、首先把...

遇到这种情况,你们捡还是不捡?

遇到这种情况,你们捡还是不捡?

遇到这种情况,你们捡还是不捡?2022-10-13 12:55·和平1直你还缺兄弟不谁来也是4个遇到这种情况,你们捡还是不捡怎么感觉老板亏了结果每次删掉的都是匙花70万给自己的大腰子放了个假请问他为什么白天不学习?看的出来,他是真心喜欢番茄炒鸡蛋很显然,他突然不想送了人间真实昨天刚分了一个 你过几天...

美国疯狂加息之后,怎么就是收割不动中国人?

美国疯狂加息之后,怎么就是收割不动中国人?

2022年一定是财经史上载入史册的一年。在美元连续三轮加息的基础上,包括西欧、韩国(无日本)在内的全球主要经济体央行全部升息,对抗美元回流的大潮。然而作为全世界第二大经济体的中国,利息不升反降,难道中国不担心美国收割吗?中国又为什么要在这个时间点选择降息?01要弄清这些问题,第一个需要解释美国加息为...

发表评论

访客

看不清,换一张

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