inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실무에 바로 적용하는 스토리북과 UI 테스트

Label 컴포넌트와 스토리의 metadata 소개

스토리 제작할 때 궁금한 점

해결된 질문

405

조진형

작성한 질문수 4

1

metadata의 argTypes를 작성한 것들을 스토리의 전달 인자에 다 작성하는 걸로 알고 있었는데, 이벤트 핸들러를 작성하지 않아도 되는 이유를 알고 싶습니다.

그리고 왜 저는 이벤트 핸들러를 작성하지 않으면 오류가 나는지 궁금합니다.

react typescript tailwind-css storybook ui-testing

답변 1

0

제이쓴

좋은 질문 감사합니다.

팀에서 컨벤션으로 정했다면 따르는게 맞겠지만, 스토리북은 UI를 확인하는 도구이기때문에,

IconButton에 hover가 일어나거나, focus가 되거나 할 때 UI가 어떻게 변경되는지 확인하는 용도이지 클릭이벤트가 발생했을때 어떤 일이 일어나는지 까지 확인하는 것은 저는 굳이 필요 없다고 생각합니다. 그건 cypress를 활용하시는 편이 더 적합한 것 같아요

 

말씀하신 에러는 정확한 에러메시지를 보고 다른 설정들을 확인해봐야 도와드릴 수 있을 것 같습니다. 에러메세지 전체를 올려주세요!

0

조진형

'{ alt: string; iconPath: string; }' 형식은 'Partial<{ alt: string; iconPath: string; onClick: (e: MouseEvent<HTMLButtonElement, MouseEvent>) => void; }> & { alt: string; iconPath: string; onClick: (e: MouseEvent<...>) => void; }' 형식에 할당할 수 없습니다.
'onClick' 속성이 '{ alt: string; iconPath: string; }' 형식에 없지만 '{ alt: string; iconPath: string; onClick: (e: MouseEvent<HTMLButtonElement, MouseEvent>) => void; }' 형식에서 필수입니다.ts(2322)

이런 에러가 뜹니다!

 

0

제이쓴

IconButton컴포넌트 파일의 코드를 올려주실 수 있나요? 스토리북 깃헙 이슈에 보면 함수의 타입이 onClickoptional 로 만드는데 영향을 미치는 것 같습니다.

 

https://github.com/storybookjs/storybook/issues/23068

위 thread를 한번 읽어보시고, maintainer가 작성한 아래 답변을 확인해주세요

https://github.com/storybookjs/storybook/issues/23068#issuecomment-1634240026

1

조진형

 onClick?: React.MouseEventHandler<HTMLButtonElement>;

버튼컴포넌트에서 인터페이스로 정의한 클릭이벤트를 옵셔널 타입으로 바꾸었더니 해결되었습니다!!

답변 달아주셔서 감사합니다.

1

제이쓴

진형님 안녕하세요!

다시보니 스토리북 버전 업그레이드때문에 발생하는 문제네요.

버튼에서 onClick 을 optional로 두면 이벤트 핸들링 기능이 없는 버튼이 될 가능성도 있어서 적합하지 않은 것 같습니다.

 

업데이트된 문서를 보면 버튼 컴포넌트의 스토리를 아래와 같이 정의합니다.

import { fn } from "@storybook/test";
import { Button } from "./Button";

export default {
  title: "Example/Button",
  component: Button,
  parameters: {
    layout: "centered",
  },
  tags: ["autodocs"],
  argTypes: {
    backgroundColor: { control: "color" },
  },
  args: { onClick: fn() },
};

onClick 을 mocking해서 fn()으로 지정해주시면 개별 스토리에서 onClick을 선언하지 않으셔도 됩니다. 위처럼 진행하시는게 더 적합한 컴포넌트 디자인인 것 같네요

1

조진형

수정하고 잘 작동하는 것까지 확인했습니다.

뭔가 찜찜한 느낌이 있었는데 잘 해결된거 같아서 감사합니다!!

스토리북에 대해서

0

57

1

Storybook 10에서 argTypes에 action 설정 시

0

74

1

storybook setup

0

86

2

실무 적용 관련해서 질문이 있습니다!

0

63

2

storybook 프로젝트 세팅 중 궁금한 점이 있습니다.

0

133

2

스토리북 테스트에 대한 질문

0

101

2

tailwind 4.x 버전 변경된 CSS 추출(?) 커맨드

1

207

2

스토리북 테마에 대해 질문 드립니다.

0

158

2

테일윈드를 안쓰고 스타일 컴포넌트만 사용하는 환경에서는요?

0

144

2

[질문 x 공유용] tailwind v4.0 으로 강의랑 다를 때 (import 다름, tailwind.config.js 없어짐 등)

6

484

2

react-toastify 를 storybook에 출력 시키기

0

181

1

react에서 modal & portal 사용시 에는 어떻게 작성해야될까요

0

374

3

tsconfig

0

180

1

vite 초기설정

0

345

2

스토리 내 args에서 에러가 발생합니다.

0

208

2

Nextjs에서 tailwind를 사용할 때

0

280

2

제공해주시는 Figma 색상 코드가 강의와 달라 글 남깁니다!

0

144

2

Visual Test

1

127

1

NavigationBar 배경색

0

129

1

defaultValue 질문 드립니다!

0

123

1

svg를 public 말고 src>assets안에 넣는다면 import를 어떻게해야하나요?

1

267

2

index.tsx 빌드 오류

0

373

2

tailwind css 코드 스플릿팅이 가능한가요?

0

281

1

StoryBook 관련 궁금 사항입니다.

1

262

1