- introduction
- install
styled-components 문법- Global styled
SSR- Theming
Tooling / Packages
1. introduction
yarn add @emotion/styled @emotion/react
- css prop 지원
- SSR에서 따로 설정을 필요로 하지 않는다
- Theme 사용 가능
- ESLint plugin 설정이 되어 있다
- @emotion/styled 는 styled.div 스타일을 사용할 수 있게 한다
2. install
yarn add --dev @emotion/babel-plugin
- optimizes styles by compressing and hoisting 하여 더 좋은 개발자 경험을 선사한다
// .babelrc
{
"env": {
"production": {
"plugins": ["@emotion", ...otherBabelPlugins]
}
},
"plugins": ["@emotion"]
}
3. styled-components 문법
Emotion - Styled Components
styled is a way to create React components that have styles attached to them. It’s available from @emotion/styled. styled was heavily inspired by styled-components and glamorous Styling elements and components styled is very similar to css except you cal
emotion.sh
4. Global styled
Emotion - Global Styles
Sometimes you might want to insert global css like resets or font faces. You can use the Global component to do this. It accepts a styles prop which accepts the same values as the css prop except it inserts styles globally. Global styles are also removed w
emotion.sh
// global.ts
import { css } from "@emotion/react";
export const global = css``;
// _app.tsx
import { Global } from "@emotion/react";
import type { AppProps } from "next/app";
import global from "../global";
function MyApp({ Component, pageProps }: AppProps) {
return (
<>
<Global styles={global} />
<Component {...pageProps} />
</>
);
}
export default MyApp;
React Emotion 글로벌 공통 스타일 적용하기
먼저 글로벌로 적용하려는 스타일을 작성한다.
dohaelee.github.io
5. SSR
Emotion - Server Side Rendering
Server side rendering in Emotion 10 has two approaches, each with their own trade-offs. The default approach works with streaming and requires no additional configuration, but does not work with nth child or similar selectors. It’s strongly recommended t
emotion.sh
6. Theming
// theme.ts
import { Theme } from "@emotion/react";
const theme: Theme = {
colors,
fonts,
};
export default theme;
// _app.tsx
import { ThemeProvider } from "@emotion/react";
import type { AppProps } from "next/app";
import theme from "../theme";
function MyApp({ Component, pageProps }: AppProps) {
return (
<ThemeProvider theme={theme}>
<Component {...pageProps} />
</ThemeProvider>
);
}
export default MyApp;
여기서 그치면 안 되고, TS와의 호환성을 위해 tsconfig.json에 import 설정을 추가해야 한다
// tsconfig.json
{
...
"jsxImportSource": "@emotion/react",
...
}
[React] StyledComponents와 Emotion을 비교해보기 (2) - css
안녕하세요. J4J입니다. 이번 포스팅은 StyledComponents와 Emotion을 비교해보는 시간에 대해 적어보는 시간을 가져보려고 합니다. 들어가기에 앞서 styled를 이용한 비교를 원하시는 분들은 다음 링크
jforj.tistory.com
7. Tooling / Packages
Emotion - Babel Plugin
@emotion/babel-plugin is highly recommended. All of the options that can be provided to @emotion/babel-plugin are documented in @emotion/babel-plugin’s README. Install In emotion version 8 and above, installation is optional. In older versions, installat
emotion.sh
Emotion - @emotion/react
Simple styling in React. Install Usage import { jsx, css, Global, ClassNames } from '@emotion/react' render( {({ css, cx }) => ( )} ) More documentation is available at https://emotion.sh.
emotion.sh
'Web.d' 카테고리의 다른 글
[CSS] 웹 앱의 사용성 높이기 (10) | 2022.09.02 |
---|---|
[Storybook][React] Storybook 기초 적용해보기 (2) | 2022.05.10 |
[React][Context] Prop drilling 과 useContext (2/2) (1) | 2022.03.30 |
[Javascript] React 와 불변성의 관계 요약정리 (1) | 2022.03.29 |
[React][Webpack] webpack, babel 로 시작하기 (without CRA) (0) | 2022.03.20 |