티스토리 뷰
반응형
storybook 및 knobs addon 설치 과정은 생략한다.
knobs는 컴포넌트의 props 프로퍼티를 동적으로 설정해볼 수 있게 해주는 애드온이다.
1. 기본 사용법
객체가 아닌 경우, text, number, array 등으로 변경하여 적용한다.
import { withKnobs, object } from "@storybook/addon-knobs";
storiesOf("스토리명", module)
.addDecorator(withKnobs)
.add("서브스토리", () => {
return {
props: {
myProps: {
type: Object,
default: object("my props", {
// 컴포넌트에 전달할 props
// 값이 knobs 탭에 표시되며 수정에 따라 화면이 반응한다.
}),
},
},
// ... 이하 생략 ...
};
});
주의: addDecorator(withKnobs)를 누락하면 스토리 이동 시 knobs가 초기화 되지 않고 계속 유지되는 현상이 발생한다.
2. 그룹핑
props 정보 중 성격이 비슷한 것들끼리(또는 원하는 것들끼리) 모아 볼 수 있게 해주는 기능이다.
키를 하나 추가하고 그룹명을 지정하면, knobs 화면 내에 지정한 그룹명 탭이 추가된다.
props: {
myProps: {
type: Object,
default: object("Props for data", {
}, "그룹명"), // knobs 내에 탭으로 표시된다.
styles: object("Props for styles", {
}, "그룹명2"),
}
}
3. props가 없는 컴포넌트에 대해 테스트 해보기
스토리에는 컴포넌트 A만 존재하고 A의 하위에 위치한 컴포넌트 B, C의 props가 A에 의해 전달되는 것이 아닌 경우,
B, C에게 전달해줄 props를 바로 설정할 수 없다.
이런 경우에는 mounted와 watch를 활용하여 구현할 수 있다.
{
props: {
...knobs에서 컨트롤할 props 설정...
/* 예시
myProps: {
type: Boolean,
default: boolean("myProps", true),
},
*/
},
mounted() {
...하위에 위치한 컴포넌트에 접근하여 값을 주입...
/* 예시
this.$refs["subComponent"].propsOfSub = this.myProps;
*/
},
watch: {
...props 변경 시 하위에 위치한 컴포넌트의 값을 재 설정...
/* 예시
myProps: function(val, oldVal) { // this 접근을 위해 arrow 대신 function 사용
this.$refs["subComponent"].propsOfSub = value;
},
*/
},
...
}
반응형
'프론트엔드' 카테고리의 다른 글
사이트 성능 측정 (0) | 2020.05.27 |
---|---|
Lighthouse no_fcp 에러 (0) | 2020.04.21 |
RGBA 색상을 회색조(grayscale)로 변경하기 (0) | 2020.03.11 |
[TIF] scss partial 파일과 import (0) | 2019.09.04 |
css transition에 opacity 적용 시 주의사항 (0) | 2019.04.18 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total