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

栏目: IT技术 · 发布时间: 4年前

内容简介:所有使用基于组件的体系结构(如Vue和React)的开发人员都知道,创建可重用组件是很困难的,而且大多数情况下,最终会通过传入大量的属性,以便从外部更容易地控制和自定义组件。这并不坏,但是传递大量属性确实会变得有点麻烦和丑陋。我们以 vuetify 的按钮组件为例,它是最简单的组件之一。假设我们想要在大多数情况下传递相同的属性:

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

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

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

<v-btn 
  color='primary' 
  href='https://alligator.io' 
  small 
  outline 
  block 
  ripple 
> 
  Hello Meat 
</v-btn> 

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

export const buttonProps = { 
  color: 'primary', 
  small: true, 
  outline: true, 
  block: true, 
  ripple: true, 
  href: 'https://alligator.io' 
} 

JSX 和 render 函数

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

在 render 函数中:

import { buttonProps as props } from './props.js'; 
 
export default { 
  render: h => h( 
    'v-btn', 
    { props }, 
    'Hello Meat' 
  ) 
}; 

在 JSX 中:

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选项中定义的对象,它将绑定所有属性

<template> 
  <v-btn v-bind='buttonProps'> 
    Hello Meat 
  </v-btn> 
</template> 
 
<script> 
  import { buttonProps } from './props.js'; 
 
  export default { 
    data: () => ({ buttonProps }) 
  } 
</script> 

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

总结

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

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


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

离散数学及其应用(原书第5版)

离散数学及其应用(原书第5版)

[美] Kenneth H. Rosen / 袁崇义 / 机械工业出版社 / 2007-6 / 79.00元

《离散数学及其应用》(原书第5版)全面而系统地介绍了离散数学的理论和方法,内容涉及数学推广、组合分析、离散结构和算法设计。全书取材广泛,除包括定义、定理的严密陈述外,还配备大量的实例和图表的说明,各种联系和题目。以及丰富的历史资料和网站资源。第5版在前四版的基础上作了大量的改进,使其成为更有效的教学工具。。一起来看看 《离散数学及其应用(原书第5版)》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具