React では複数の属性を、
const attributes = {
target: '_blank',
href: 'piyo'
};
<a {...attributes}>リンク</a>
⇓
<a href="piyo" target="_blank">リンク</a>
のようにして出力することができますが、これを Vue.js で行います。
まとめて属性を出力
...
props: {
href: String,
target: {
type: String,
default: '_self'
}
}
computed: {
attributes() {
return {
href: this.href,
target: this.target,
}
}
},
template: `
<a v-bind="attributes">
`,
...
こんなコンポーネントを作ることは無いと思いますが、computed
メソッドでattributes
を定義(名前は何で もOKです)して、そのオブジェクトをそのままv-bind
に指定することで、オブジェクトのkey: value
を属性として全て出力できます。
attributes()
関数の中で分岐を書けば、与えられた props によって属性値を動的に変化させることもできます。
結局の所、v-bind
にオブジェクトを渡してあげればそれを複数の属性として出力できます。
<div v-bind="{ myKey: '値', myKey2: '値' }">
下記の公式リファレンスにも書いてありました。