沐鳴註冊_將多個屬性傳遞給 Vue 組件的幾種方式

所有使用基於組件的體繫結構(如vue和react)的開發人員都知道,創建可重用組件是很困難的,而且大多數情況下,最終會通過傳入大量的屬性,以便從外部更容易地控制和自定義組件。這並不壞,但是傳遞大量屬性確實會變得有點麻煩和醜陋。

我們以 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>

使用此技巧,我們無需在應用中的多個位置填充重複屬性的模板,同時仍然可以使用受歡迎的模板標記。

總結

使用本文中提到的示例,可以簡化將多個屬性傳遞給組件的操作。 這對於具有很多屬性的表示性和第三方組件特別有用。

注意,這裏使用的示例僅僅演示。如果想製作更加靈活可用的,可以根據具體情況使用更好的方法,例如創建自己的包裝器組件。

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

站長推薦

1.雲服務推薦: 國內主流雲服務商,各類雲產品的最新活動,優惠券領取。地址:阿里雲騰訊雲華為雲

2.廣告聯盟: 整理了目前主流的廣告聯盟平台,如果你有流量,可以作為參考選擇適合你的平台點擊進入

鏈接: http://www.fly63.com/article/detial/8549