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

Posted

技术标签:

【中文标题】如何将道具传递给组件的故事?【英文标题】:How to pass props to component's story? 【发布时间】:2018-04-15 03:14:25 【问题描述】:

我想使用Storybook 为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 />`
    ))

dataprops 都未被故事书识别 - 他们似乎被忽略了。

【问题讨论】:

【参考方案1】:

我已经解决了。

.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(即使它只是一个警告而不是错误,我发现奇怪)

【讨论】:

如果你想让 props(来自 storybook 旋钮)动态地反映到组件的 props 中,你可以使用 computed.示例:props: KnobTitle: default('Title', 'Title Text') , computed: componentProp() return ComponentTitle: this.KnobTitle ; , template: '&lt;MyComponent :my-prop="componentProp"&gt;'

以上是关于如何将道具传递给组件的故事?的主要内容,如果未能解决你的问题,请参考以下文章

如何将道具传递给递归子组件并保留所有道具

如何将道具传递给来自不同来源的组件?

如何将组件中的道具传递给 FlatList renderItem

如何防止将道具传递给内部样式组件

如何将道具传递给vue中的子组件

ReactJS - 如何将组件引用作为道具传递给另一个组件?