TypeScript에서 styled-components의 Tips 사용
7335 단어 styled-componentsReactTypeScript
props에서 정형화하기
부모님이 특정한reactcomponent가 아닐 때는 아래와 같이 간단하게 쓰시는 것을 추천합니다.
const Button = styled.button<{primary: boolean}>`
color: ${({primary}) => primary ? 'skyblue' };
`
구성 요소가 복잡해지거나 부모 프로필을 인용하면Pick을 사용하면 유지보수 비용을 낮출 수 있습니다interface Props {
primary
secondary
// 略
}
function MyComponent(props: Props) {
return (
<div>
<Button secondary={props.secondary} primary={props.primary}>{props.children}</Button>
</div>
)
}
const Button = styled.button<Pick<Props, 'primary' | 'secondary'>>`
${({primary, secondary}) => primary ? css`` : secondary ? css`` : css``}
`
정수에 문형을 더하다
색상과 사이즈 등의 상수에 금형을 더하면 사용할 때 어떤 px를 적용하는 것이 편리한지 알 수 있다.
const FONT = {
XXXLARGE: 32,
XXLARGE: 24,
XLARGE: 18,
LARGE: 16,
MEDIUM: 14,
BASE: 12,
SMALL: 11,
XSMALL: 10,
TINY: 8,
} as const
const FONT_WEIGHT = {
NORMAL: 400,
BOLD: 600,
} as const
const BORDER_RADIUS = 4 as 4
export default {
FONT,
FONT_WEIGHT,
BORDER_RADIUS
}
이렇게 하면 ↓편집기의suggestion 기능에서 어느 상수가 어느 px를 가지고 있는지 확인할 수 있다.css prop 사용 시
babel-plugin과 babel macro에서 사용하는 css prop은 jsx의 확장이기 때문에 아무것도 하지 않으면 TS에게 욕을 먹습니다.
type root의 index입니다.d.ts로 아래의 내용을 기술하면 해결할 수 있다.(styled-components/cssprop react 확장)
import {} from 'styled-components/cssprop'
attrs 사용 시
이것은 좀 번거로운 작법이 필요하기 때문에, 원래attrs를 자주 사용하지 않을 수도 있습니다.
const StyledImg = styled.img.attrs<{ logoSrc: logoSrc }>(
({logoSrc}) => ({
src: logoSrc,
})
)<{ logoSrc: logoSrc }>``
Reference
이 문제에 관하여(TypeScript에서 styled-components의 Tips 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/taneba/items/3bff0c5a1b0ebed36b5b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)