如何将道具传递给组件的故事?

时间:2017-11-02 14:39:04

标签: javascript vue.js storybook

我想使用vue-selectStorybook组件添加一些故事,但我正在努力处理更复杂的案例,其中涉及传递道具或方法。

当我在模板中传递道具时,它可以正常工作

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 />`
    }))

但故事书中 dataprops都无法识别 - 它们似乎被忽略了。

2 个答案:

答案 0 :(得分:11)

我已经解决了。

.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" />`
    }))

我以前的做法有两个问题:

  • 传递data未包含在函数中
  • 我应该只通过data。 使用propsdata似乎使Vue返回警告(数据属性“options”已经被声明为prop。)并忽略传递data(尽管它只是一个警告不是错误,我觉得很奇怪)

答案 1 :(得分:0)

您是否尝试使用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"/>`
    }))
相关问题