アイコンのようなものを持つボタンであるコンポーネントがあります。私はこのようにそれを使用します。vue:定義内の小道具を変換する
<ti-btn icon="..." @click.native="..."></ti-btn>
も、私は必要とされていない小道具を渡すことができ、この小道具はサイズ、数です。
<ti-btn icon="..." size="32" @click.native="..."></ti-btn>
は今、私のコンポーネントの定義では、最初に、私が書いた:
<template>
<i :class="icon" :style="{fontSize}"></i>
</template>
<script>
export default {
props: ['icon', 'size'],
computed: {
fontSize() {
return this.size ? `${this.size}px` : DEFAULT_SIZE;
}
}
}
</script>
サイズが受け継がれていない場合、私はデフォルト値を設定します。それはうまくいっていますが、良いプラクティスとvueスタイルのガイドによれば、プロップの定義はできるだけ詳しく記述する必要があります。だから、私はこの方法を使用することを開始しました:
props: {
icon: {
type: String,
required: true,
validate(value){
//some kind of validation here
return value.includes('ti')
}
},
size: {
type: Number,
required: false,
default: DEFAULT_SIZE
}
}
サイズは小道具数を受け、しかし、それは文字列を返す必要があり、実際にはDEFAULT_SIZEは文字列である「24ピクセル」に設定されていますまた、受信値は値+ "px"に変換されます。ですから、私の質問は、計算されたプロパティを使用せずに、独自の定義オブジェクトでサイズpropをどのように変換できますか?
私はあなたができるとは思わない:**小道具は、どの引数/パラメータが**で渡すことができるかを指示するインターフェイスとしてのみ機能し、それの受け入れられる型/形式は何か。受信データを変換する機能はありません。計算された小道具として、またはテンプレート自体の中で、文字列の補間に頼らなければなりません。私は 'DEFAULT_SIZE'を一貫性の酒の数として設定し、実際のピクセルサイズを計算/補間するべきだと言います。 – Terry
ここで計算されたプロパティが正しいアプローチです。 – Bert