Styled Components
Styled Components?
以前に反応器にcssを適用した場合、すべてのcssコードを記述して適用する別のページが作成されます.この場合、欠点は、簡潔に書き始めるとclassが多ければ多いほど時間が長くなり、繰り返しであれば同じようなことも起こります...簡単に言えば、一目瞭然ではありません.
この問題を解決するには、cssをページに配置するのではなく、機能とcssをコンポーネントに配置します.Styled-Componentsは、JavaScriptでcssを使用するのに役立つライブラリです.これをCSS in JSと呼びます.他のcss-in-jsにはemotion、springなどがあります.
cssファイルはコンポーネントにないため、cssをグローバルにオーバーラップさせないことができます.
1.特徴
Styled Componentは、画面でレンダリングされた構成部品を追跡し、これらの構成部品にスタイルを自動的に挿入します.したがって、コードを適切に割り当てることで、ユーザがアプリケーションを使用する際に最小限のコードで画面を表示できるようにすることができる.
No class name bugs
Styled Componentは独自のclassNameを生成します.これにより、classNameの重複またはエラーによるエラーを低減できます.
Easier deletion of CSS
Styled Componentのすべてのスタイル属性は、特定の構成部品に関連付けられているため、構成部品を使用しなくなったために削除すると、スタイル属性も削除されます.
Simple dynamic styling
これは、classNameを手動で管理する必要がなく、Reactのpropsまたはグローバル属性に基づいてコンポーネントにスタイル属性を付与する簡単で直感的です.
Painless maintenance
継承スタイルから構成部品への属性を検索して他のCSSファイルを検索する必要がないため、コードが大きくなってもメンテナンスは難しくありません.
Automatic vendor prefixing
既存のCSSを使用するスタイルプロパティを各構成部品に定義するだけです.その他はStyled Componentが処理します.
Tagged Template Literals
関数のパラメータは、Template Libralsを使用してグループ化および転送されます.この構文を使用して、Function、Number、Array、Objectなどを転送および実行できます.
function transform(staticData, ...dynamicData) {
console.log(staticData); // ["Hi, ", " and I am ", "."]
console.log(dynamicData);// ["Mygumi", 20]
}
transform`Hi, ${userName} and I am ${age}.`;
transform를 일반적인 함수 호출 방식인 transform() 이 아닌 transform` ` 형태이다.
첫 번째 데이터에는 정적 데이터가 , 나머지 파라미터에는 동적데이터가 저장되어있다
## 2. 설치, 사용
```javascript
npm install --save styled-components
(1)基本文法
import styled from "styled-components"; // styled-components 패키지에서 styled 함수를 임포트
styled.button"
//<button> HTMOL 엘리먼트에 스타일 정의
"
パラメータ伝達素子
import styled from "styled-components";
import Button from "./Button";
styled(Button)`
// <Button> React 컴포넌트에 스타일 정의
`;
(2) props
スタイル属性:${props=>props.style?真時属性:偽時属性
import React from "react";
import styled from "styled-components";
const StyledButton = styled.button`
padding: 0.375rem 0.75rem;
border-radius: 0.25rem;
font-size: 1rem;
line-height: 1.5;
border: 1px solid lightgray;
color: ${(props) => props.color || "grey"}; //props 칼라가 없으면 grey
background: ${(props) => props.background || "white"};
`;
function Button({ children, color, background }) {
return (
<StyledButton color={color} background={background} Î>
{children}
</StyledButton>
);
}
styled-conentsは素子のpropsを伝達して使用することができる.条件に応じて値を変更できます.
(3)extends:継承&拡張
const構成部品名=styled(継承する構成部品)
const Button = styled.button`
`;
const LongButton = styled(Button)`
//button을 상속받고, 속성을 추가할 수 있음
`;
(4)attrs属性の指定
スタイル要素を宣言するときに、すぐにプロパティを選択できます.
const PwInput = styled.input.attrs(props => ({
type : "password"
}))
const TextInput = styled.input.attrs(props => ({
type : "text"
}))
(5)禁忌事項
renderでStyled componentを宣言しないでください.レンダリングのたびに要素が再作成されるためです.
import React from 'react';
import styled from 'styled-components';
const AnyComponent = () => {
// 절대 여기서 선언하면 안됩니다!
const Button = styled.button`
{button styles...};
`;
return (
<Button>Bad!!!!</Button>
);
}
return AnyComponent;
ソース
https://kimdabin.tistory.com/entry/Styled-Components-%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC-Basic
https://velog.io/@hwang-eunji/Styled-Components-%EB%A6%AC%EC%95%A1%ED%8A%B8-%EC%8A%A4%ED%83%80%EC%9D%BC-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8
Reference
この問題について(Styled Components), 我々は、より多くの情報をここで見つけました https://velog.io/@tastestar/Styled-Componentsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol