Skip to Content

createEv

variant prop이 breakpoint마다 값을 하나씩 받는 ev 함수를 만들어요.

const { ev } = createEv(options);

사용법

createEv(options)

variant가 화면 너비에 따라 바뀌어야 할 때 createEv를 쓰세요. breakpoint를 한 번 선언하고, 반환된 ev를 export해서 앱 전체에서 쓰면 돼요.

import { createEv } from 'emotion-variants';

export const { ev } = createEv({
  breakpoints: {
    md: '@media (min-width: 768px)',
    lg: '@media (min-width: 1024px)',
  },
});

파라미터

  • options.breakpoints (Record<string, string>, 선택): breakpoint 이름을 키로 하는 media query예요. 너비가 작은 것부터 큰 순서로 적어요. initial은 이름으로 쓸 수 없고, 숫자로 읽히는 이름도 쓰면 안 돼요.

반환 값

({ ev: Ev<B> }): ev 함수가 담긴 객체예요. ev와 같은 스타일 정의를 받고, 이 ev가 반환하는 함수는 반응형 값을 받아요. breakpoints가 없으면 패키지에서 export하는 ev와 똑같이 동작해요. 그 ev가 바로 createEv().ev예요.

반응형 값

이 ev로 만든 함수의 모든 variant prop은 값 하나를 받거나, breakpoint마다 값을 하나씩 담은 객체를 받아요.

const button = ev({
  variants: {
    size: {
      small: {
        fontSize: 12,
      },
      large: {
        fontSize: 16,
      },
    },
  },
  defaultVariants: {
    size: 'small',
  },
});

button({
  size: {
    initial: 'small',
    md: 'large',
  },
});
  • initial: media query 밖에 놓이는 값이에요. 생략하면 그 축의 기본 variant가 쓰여요.
  • breakpoint 이름: 그 breakpoint의 media query 안에 놓이는 값이에요. 생략한 breakpoint는 아무것도 더하지 않아요.

스타일은 평소 순서에서 그 축이 놓이는 자리에 들어가요. initial의 스타일이 먼저 오고, 그 뒤에 breakpoint를 선언한 순서대로 breakpoint마다 스타일이 하나씩 와요. breakpoint 스타일은 그 값이 처음 쓰일 때 직렬화하고, 그 뒤로는 다시 써요.

반응형 값을 받은 축은 그 호출에서 어떤 복합 variant와도 일치하지 않아요. 객체에 initial만 있어도 마찬가지예요.

className()도 같은 값을 받고, slots에서는 각 slot 함수도 같은 값을 받아요. defaultVariants는 받지 않아요.

순서 규칙과 제약은 Responsive에서 다뤄요.

타입

Ev, EvFunction, EvVariants는 타입에서 확인하세요. 모두 마지막 타입 매개변수로 breakpoint 이름을 받아요.

GitHub에서 이 페이지 편집

마지막 업데이트

이 페이지에서