前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >将多个属性传递给 Vue 组件的几种方式

将多个属性传递给 Vue 组件的几种方式

作者头像
前端小智@大迁世界
发布于 2020-05-11 09:47:01
发布于 2020-05-11 09:47:01
2K00
代码可运行
举报
文章被收录于专栏:终身学习者终身学习者
运行总次数:0
代码可运行

作者:Jover Morales 译者:前端小智 来源:alligator

所有使用基于组件的体系结构(如Vue和React)的开发人员都知道,创建可重用组件是很困难的,而且大多数情况下,最终会通过传入大量的属性,以便从外部更容易地控制和自定义组件。这并不坏,但是传递大量属性确实会变得有点麻烦和丑陋。

我们以 vuetify 的按钮组件为例,它是最简单的组件之一。假设我们想要在大多数情况下传递相同的属性:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<v-btn
  color='primary'
  href='https://alligator.io'
  small
  outline
  block
  ripple
>
  Hello Meat
</v-btn>

将它们放在单独的文件中是有意义的,这个文件我们取名为props.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export const buttonProps = {
  color: 'primary',
  small: true,
  outline: true,
  block: true,
  ripple: true,
  href: 'https://alligator.io'
}

JSX 和 render 函数

由于JSX 和 render 函数在渲染时为我们提供了更多的功能和灵活性,所以一次传递多个属性是相当容易的。

在 render 函数中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { buttonProps as props } from './props.js';
export default {
  render: h => h(
'v-btn',
{ props },
'Hello Meat'
)
};

在 JSX 中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { buttonProps as props } from './props.js';

const data = { props }

export default {
  render: h => <v-btn {...data}>Hello Meat</v-btn>
};

使用 Vue.js 模板

使用Vue template怎么样?不用担心,那也是可能的。我们所需要做的就是使用v-bind指令。对于必须在组件的data选项中定义的对象,它将绑定所有属性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
  <v-btn v-bind='buttonProps'>
    Hello Meat
  </v-btn>
</template>

<script>
  import { buttonProps } from './props.js';

  export default {
    data: () => ({ buttonProps })
  }
</script>

使用此技巧,我们无需在应用中的多个位置填充重复属性的模板,同时仍然可以使用受欢迎的模板标记。

总结

使用本文中提到的示例,可以简化将多个属性传递给组件的操作。 这对于具有很多属性的表示性和第三方组件特别有用。

注意,这里使用的示例仅仅演示。如果想制作更加灵活可用的,可以根据具体情况使用更好的方法,例如创建自己的包装器组件。

代码部署后可能存在的BUG没法实时知道,事后为了解决这些BUG,花了大量的时间进行log 调试,这边顺便给大家推荐一个好用的BUG监控工具 Fundebug

原文:https://alligator.io/vuejs/pa...

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Vue.js 中的无渲染行为插槽[每日前端夜话0xF7]
翻译:疯狂的技术宅 作者:David Desmaisons 来源:alligator
疯狂的技术宅
2019/12/11
1.5K0
来,vue弹窗插件走一个
记得有一次组内分享,以弹窗为例讲了如何创建可复用的vue组件,后面发现这个例子并不恰当(bei tiao zhan),使用组件需要先import,再注册,然后再按照props in events out原则使用,无论从流程或者使用方式来说都相当麻烦。
elson
2018/06/17
9.5K4
来,vue弹窗插件走一个
全面了解 Vue.js 函数式组件
如果你是一位前端开发者,又在某些机会下阅读过一些 Java 代码,可能会在后者中看到一种类似 ES6 语法中箭头函数的写法
江米小枣
2021/11/02
2.9K0
vue2升级vue3:Vue2/3插槽——vue3的jsx组件插槽slot怎么处理
vue 在 2.6 版本中,对插槽使用 v-slot 新语法,取代了旧语法的 slot 和 slot-scope,并且之后的 Vue 3.0 也会使用新语法,这并不是仅写法的不同,还包括了性能的提升
周陆军博客
2022/06/24
2.3K0
vue组件对象字面量传值的注意啦!
前面汇总过 「vue组件引用传值的最佳实践」,对于 vue2 版本存在一个严重的性能问题,需要格外注意:对象字面量的传递
奋飛
2020/05/28
2.3K0
Vue 中 JSX 的基本用法
首先需要约定一下,使用JSX组件命名采用首字母大写的驼峰命名方式,样式可以少的可以直接基于vue-styled-components写在同一个文件中,复杂的建议放在单独的Styles.js文件中,当然也可以不采用CSS-IN-JS的方式,使用Less/Sass来写,然后在文件中import进来。
CRMEB商城源码
2022/06/08
1.1K0
如何实现 Vue 自定义组件中 hover 事件以及 v-model
在Vue中,它会变得更复杂一些,因为我们没有内置这个功能。我们必须自己实现这些。不过别担心,工作量不是很大。
前端小智@大迁世界
2020/05/11
21.1K0
10个简单的技巧让你的 vue.js 代码更优雅
作为深度代码洁癖,我们都希望能写出简单高效的代码,让我们的代码看起来更加优雅,让我们抛弃繁杂的代码,一起开启简单的旅程~~
王小婷
2020/11/10
1.1K0
【Vue进阶】——如何实现组件属性透传?
很多时候,我们需要基于一些 UI 框架进行二次封装,这里以 Element UI 为例,封装一个 Input 组件类似如下:
GopalFeng
2020/09/24
6.2K0
【Vue进阶】——如何实现组件属性透传?
一个合格的中级前端工程师应该掌握的 20 个 Vue 技巧
之前写过一篇文章,关于 Vue 属性透传的,文章中我列举了很多种方法去实现属性透传。其中包括直接设置 props,v-bind="$attrs",render function 等方式。感兴趣,详情看 【Vue 进阶】——如何实现组件属性透传?
GopalFeng
2020/09/24
6.1K0
一个合格的中级前端工程师应该掌握的 20 个 Vue 技巧
Vue 中 render 函数有点意思
我们知道 Vue 模板是非常强大的,基本可以完成我们日常开发的所有任务。但是,有一些用例,如基于输入或插槽值创建动态组件方式,render 函数会比模板完成的更好也更出色。
前端小智@大迁世界
2020/05/12
1.1K0
Vue(下)
日常开发中,通常设置一个app组件作为主组件(相当于单文件组件的App.vue):
十玖八柒
2022/08/01
2.3K0
Vue(下)
如何在 Vue 中使用 JSX 以及使用它的原因
Vue.js 具有简单的 API 和几个选项,可用于在我们的组件中定义HTML模板。
前端小智@大迁世界
2020/05/12
4.4K0
学会使用Vue JSX,一车老干妈都是你的
连续几篇文章,每篇都有女神,被掘友给吐槽了,今天不提了女神了,反正女神都是别人的(扎心了)。这两天小编看了腾讯与老干妈的事情,晚上馒头夹老干妈吃起来都感觉很带劲。今天这篇文章将给大家小编在项目中使用JSX的一些实战经验。其实一般情况下写Vue还是比较推荐template的写法的,但是有时候我们真的需要更灵活的去做一些功能,这时候就需要用到JSX了。
前端进击者
2021/07/27
2.9K0
vue3中可以帮助你早点下班的9个开发技巧!
vue3也发布很长时候了,官方也将默认版本切换为vue3,而且也出现了完善的中文文档,不知同志们是否已经使用了了呢?
用户7413032
2022/04/01
1.1K0
vue3中可以帮助你早点下班的9个开发技巧!
Vue 2x 中使用 render 和 jsx 的最佳实践 (3)
通过对上面的代码进行分析,不难发现,Vue模板中的每一个元素编译之后都会对应一个createElement。
默默的成长
2022/10/29
4.1K0
商城项目-从0开始品牌的查询
为了方便看到效果,我们新建一个MyBrand.vue(注意先停掉服务器),从0开始搭建。
cwl_java
2020/02/11
4.8K0
怎么在Vue中写jsx语法,以及render函数
最近遇到一个项目,是对element-ui进行了二次封装,做了一些自己的组件库,其中很多实现都是render函数配合template模板实现的,还有就是表单这块是一块比较复杂的业务逻辑,里面用到了jsx语法,我也抽时间研究了jsx在vue中怎么使用,所以记录下自己写的demo,后面好进行查漏补缺。
玖柒的小窝
2021/10/31
3.2K0
怎么在Vue中写jsx语法,以及render函数
Vue与React的异同-组件(二)
版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/article/details/79113260
空空云
2018/09/27
1.3K0
vue 2.6 中 slot 的新用法
最近发布不久的Vue 2.6,使用插槽的语法变得更加简洁。 对插槽的这种改变让我对发现插槽的潜在功能感兴趣,以便为我们基于Vue的项目提供可重用性,新功能和更清晰的可读性。 真正有能力的插槽是什么?
前端小智@大迁世界
2019/07/10
1.7K0
相关推荐
Vue.js 中的无渲染行为插槽[每日前端夜话0xF7]
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验