LoginSignup
0
0

More than 3 years have passed since last update.

【Vue.js】一部オプションを指定済のコンポーネント作成

Posted at

例えば、Vuetifyによるボタンのスタイルを、メインの動線(OKなど)とそれ以外(キャンセルなど)で別々にしたいとき、次のようなコードを至るところに入れ込むことになってしまう。

<!-- メイン動線のボタン:背景色と波紋色を指定 -->
<v-btn color="primary" :ripple="{ class: 'cyan--text text--lighten-1' }">OK</v-btn>

これでは見通しが悪い上、後からスタイルを変更するのも大変である。

解決策

コンポーネントの一部オプションを書き換えて描画をおこなう関数型コンポーネントを作成する。

MainBtn.vue
<script>
export default {
  name: 'MainBtn',
  functional: true,
  render(h, { data, children }) {
    data.props = Object.assign({
      color: 'primary',
      ripple: { class: 'cyan--text text--lighten-1' }
    }, data.props || {});

    return h('v-btn', data, children);
  },
};
</script>

使い方

登録すればテンプレートなどに記述できる。

<main-btn>スタイルを変更したボタン</main-btn>
<v-btn>そのままのボタン</v-btn>

propsやeventsもそのまま使うことができる。

<main-btn @click="onClickOk" elevation="24">OK</main-btn>
<v-btn @click="onClickCancel" elevation="24">CANCEL</v-btn>
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0