개요
Tailwind를 사용하던 중 아래와 같이 여러개의 카드 컴포넌트에 각각 다른 flex-basis를 줘야하는 일이 생겼다.

결론 : 객체 만들어 활용하기
나는 많은 속성을 주는 것이 아니였기 때문에 className 전체를 객체화 시켜서 활용하였다.
const flexRow: IFlexRow = {
0: "h-auto w-auto",
0.2: "h-auto w-auto basis-1/5 ",
0.5: "h-auto w-auto basis-1/2 ",
0.8: "h-auto w-auto basis-4/5 ",
};
후에 props로 객체의 key 값을 받아 객체를 할당하였다.
export default function Card({ title, children, basis }: ICard) {
return (
<div className={flexRow[basis ? basis : 0]}>
...
</div>
);
}
여러개의 동적 속성 값이 요구되는 경우
나는 하나의 동적 값만 필요했기 때문에 전체를 다 묶어서 객체화시켰지만
여러개의 동적 값이 필요하고 경우의 수가 다양한 경우에는 속성 하나하나를 객체로 컴포넌트화시켜서 사용하는 것이 더 편리할 것 같다.
예)
const colors: any = {
red: "text-red-600",
black: "text-black",
};
const textSizes = {
sm: "text-sm",
md: "text-md",
lg: "text-lg",
};
<div className={`${colors["red"]} ${textSizes["sm"]}`}></div>
참고 : https://moon-ga.github.io/tailwind_css/2-dynamic-classnames/
'Tech > Styling' 카테고리의 다른 글
[SCSS] 관계 선택자로 인한 nesting 삽질 후기와 해결 (0) | 2024.03.13 |
---|---|
styled-components 파헤치기 (feat. 리액트) (0) | 2023.01.02 |
개요
Tailwind를 사용하던 중 아래와 같이 여러개의 카드 컴포넌트에 각각 다른 flex-basis를 줘야하는 일이 생겼다.

결론 : 객체 만들어 활용하기
나는 많은 속성을 주는 것이 아니였기 때문에 className 전체를 객체화 시켜서 활용하였다.
const flexRow: IFlexRow = {
0: "h-auto w-auto",
0.2: "h-auto w-auto basis-1/5 ",
0.5: "h-auto w-auto basis-1/2 ",
0.8: "h-auto w-auto basis-4/5 ",
};
후에 props로 객체의 key 값을 받아 객체를 할당하였다.
export default function Card({ title, children, basis }: ICard) {
return (
<div className={flexRow[basis ? basis : 0]}>
...
</div>
);
}
여러개의 동적 속성 값이 요구되는 경우
나는 하나의 동적 값만 필요했기 때문에 전체를 다 묶어서 객체화시켰지만
여러개의 동적 값이 필요하고 경우의 수가 다양한 경우에는 속성 하나하나를 객체로 컴포넌트화시켜서 사용하는 것이 더 편리할 것 같다.
예)
const colors: any = {
red: "text-red-600",
black: "text-black",
};
const textSizes = {
sm: "text-sm",
md: "text-md",
lg: "text-lg",
};
<div className={`${colors["red"]} ${textSizes["sm"]}`}></div>
참고 : https://moon-ga.github.io/tailwind_css/2-dynamic-classnames/
'Tech > Styling' 카테고리의 다른 글
[SCSS] 관계 선택자로 인한 nesting 삽질 후기와 해결 (0) | 2024.03.13 |
---|---|
styled-components 파헤치기 (feat. 리액트) (0) | 2023.01.02 |