Suebook を使用して vue-select コンポーネントのストーリーを追加したかったのですが、小道具やメソッドを渡すなど、より複雑なケースで苦労しています。
テンプレート内で小道具を渡すと、機能します:
storiesOf('VSelect', module)
.add('with labeled custom options', () => ({
components: {VSelect},
template: `<v-select :options='[{value: "CA", label: "Canada"}, {value: "UK", label: "United Kingdom"}]' />`
}))
あまり読みにくいので、小道具またはデータとして個別に渡したかったのです。
.add('with labeled custom options as props', () => ({
components: {VSelect},
props: {options: [{value: "CA", label: "Canada"}, {value: "UK", label: "United Kingdom"}]},
data: {options: [{value: "CA", label: "Canada"}, {value: "UK", label: "United Kingdom"}]},
template: `<v-select />`
}))
data
もprops
もストーリーブックでは認識されません-無視されているようです。
解決しました。
.add('with labeled custom options as props', () => ({
components: {VSelect},
data() {
return {
options: [{value: "CA", label: "Canada"}, {value: "UK", label: "United Kingdom"}]
}
},
template: `<v-select :options="options" />`
}))
私の以前のアプローチには2つの問題がありました:
data
は関数にラップされていませんdata
のみを渡す必要があります。 props
とdata
の両方を使用すると、Vueは警告を返します(データプロパティ "options"は既にプロップとして宣言されています)。渡されたdata
は無視されます(エラーではなく単なる警告です) 、私は奇妙だと思う)データ内のオプションをVSelectコンポーネントのオプションとバインドしようとしましたか?
このような:
.add('with labeled custom options as props', () => ({
components: {VSelect},
data: {options: [{value: "CA", label: "Canada"}, {value: "UK", label: "United Kingdom"}]},
template: `<v-select :options="options"/>`
}))