Storybook 6 - 如何设置对象数组?
Storybook 6 - how to set array of objects?
我想为我的 Badge 组件传递数据道具,但我对 addon-knobs
库中的 array
方法有疑问。 Data prop 是一个对象数组,我试图像这样传递它:
const data = [
object('First', {color: '#fa2dac', text: 'RSS'}),
object('Second', {color: '#fa2dac', text: 'RSS'}),
];
结果是我有 2 个字段(第一个和第二个),但是当我想更改其中的值时,它们不会在屏幕上更新。
第二次尝试:
const data = array('List of items', [
object('First', {color: '#fa2dac', text: 'RSS'}),
object('Second', {color: '#fa2dac', text: 'RSS'}),
]);
这给了我相同的结果,但我得到的不是 2 个,而是 3 个字段,第三个字段有值 [object Object]
第三次尝试:
const data = array('List of items', [
{color: '#fa2dac', text: 'RSS'},
{color: '#fa2dac', text: 'RSS'},
]);
这让我只提交了[object Object]
如何使用对象数组添加旋钮并进行全面更新?
我将数据数组移动到组件中,现在它运行良好。我唯一注意到的是对象数组必须使用 object
方法传递,现在它可以工作并刷新页面。
export const Primary = () => {
const data = object('List of items', [
{color: '#fa2dac', text: 'RSaS'},
{color: '#fa2dac', text: 'RSaS'},
]);
return <Badge data={data}></Badge>;
};
使用“@storybook/addon-knobs”:“6.0.21”,“@storybook/angular”:“6.0.21”,
我有一个对象数组,我将其作为@Input() 链接传递:Links[];使用此设置,您将能够通过任何 JSON 对象。
Angular 分量:
export class HeaderComponent {
@Input() links: Link[] = [];
@Output() navigate = new EventEmitter<any>();
linkClicked(link: Link){
this.navigate.emit(link);
}
}
从“@storybook/addon-knobs”导入{文本、数字、布尔值、数组、select、对象};
import { HeaderComponent, Link } from './header.component';
export default {
title: 'HeaderComponent'
}
let links: Link[] = [{name: "link one", route: ""}]
export const primary = () => ({
moduleMetadata: {
imports: []
},
component: HeaderComponent,
props: {
links: object("links",links)
}
})
对于 6.4.19 Storybook,您应该映射您的选项。目前,@storybook/addon-knobs 已弃用。
argTypes: {
data: {
control: {
type: 'select',
labels: {
first: 'First Option',
second: 'Second Option'
}
},
options: ['first', 'second'],
mapping: {
first: {color: '#fa2dac', text: 'RSS'},
second: {color: '#fa2dac', text: 'RSS'}
}
}
}
我想为我的 Badge 组件传递数据道具,但我对 addon-knobs
库中的 array
方法有疑问。 Data prop 是一个对象数组,我试图像这样传递它:
const data = [
object('First', {color: '#fa2dac', text: 'RSS'}),
object('Second', {color: '#fa2dac', text: 'RSS'}),
];
结果是我有 2 个字段(第一个和第二个),但是当我想更改其中的值时,它们不会在屏幕上更新。
第二次尝试:
const data = array('List of items', [
object('First', {color: '#fa2dac', text: 'RSS'}),
object('Second', {color: '#fa2dac', text: 'RSS'}),
]);
这给了我相同的结果,但我得到的不是 2 个,而是 3 个字段,第三个字段有值 [object Object]
第三次尝试:
const data = array('List of items', [
{color: '#fa2dac', text: 'RSS'},
{color: '#fa2dac', text: 'RSS'},
]);
这让我只提交了[object Object]
如何使用对象数组添加旋钮并进行全面更新?
我将数据数组移动到组件中,现在它运行良好。我唯一注意到的是对象数组必须使用 object
方法传递,现在它可以工作并刷新页面。
export const Primary = () => {
const data = object('List of items', [
{color: '#fa2dac', text: 'RSaS'},
{color: '#fa2dac', text: 'RSaS'},
]);
return <Badge data={data}></Badge>;
};
使用“@storybook/addon-knobs”:“6.0.21”,“@storybook/angular”:“6.0.21”,
我有一个对象数组,我将其作为@Input() 链接传递:Links[];使用此设置,您将能够通过任何 JSON 对象。 Angular 分量:
export class HeaderComponent {
@Input() links: Link[] = [];
@Output() navigate = new EventEmitter<any>();
linkClicked(link: Link){
this.navigate.emit(link);
}
}
从“@storybook/addon-knobs”导入{文本、数字、布尔值、数组、select、对象};
import { HeaderComponent, Link } from './header.component';
export default {
title: 'HeaderComponent'
}
let links: Link[] = [{name: "link one", route: ""}]
export const primary = () => ({
moduleMetadata: {
imports: []
},
component: HeaderComponent,
props: {
links: object("links",links)
}
})
对于 6.4.19 Storybook,您应该映射您的选项。目前,@storybook/addon-knobs 已弃用。
argTypes: {
data: {
control: {
type: 'select',
labels: {
first: 'First Option',
second: 'Second Option'
}
},
options: ['first', 'second'],
mapping: {
first: {color: '#fa2dac', text: 'RSS'},
second: {color: '#fa2dac', text: 'RSS'}
}
}
}