npm i styled-components
styled-components는 style이 적용된 Component를 생성
Component의 props를 전달받아 조건부로 사용 가능
📄 App.jsx
import React from 'react';
import styled from 'styled-components';
const Button = styled.button`
width: 50px;
padding: 1rem;
background-color: ${props => props.delete ? "red" : "blue"}
&:active { // 의사 클래스(가상 클래스) css 적용
box-shadow: 1px 1px 1px;
}
`
const App = () => {
return (
<Button>Create</Button>
<Button delete>Delete</Button>
);
}
export default App;
기존 Component에 스타일을 추가
📄 App.jsx
import React from 'react';
import { Input } from 'antd';
import 'antd/dist/antd.css';
const MyInput = styled(Input)`
margin: 16px;
&:disabled {
${(props) => (props.valid === 'invalid' ? 'background: #ccc' : null)}
`;
const App = () => {
return (
<MyInput
type="email"
id="email"
name="email"
value={email}
onChange={onChangeEmail}
placeholder="이메일 입력"
required
valid="invalid"
/>
)
}
css 파일을 생성하여 선언한 뒤 className으로 적용
📄 App.css
.mb-4 {
margin-bottom: 4px;
}
📄 App.jsx
import React from 'react';
import styled from 'styled-components';
const Button = styled.button`
width: 50px;
padding: 1rem;
background-color: ${props => props.delete ? "red" : "blue"}
`
const App = () => {
return (
<Button className="mb-4">Create</Button>
<Button delete="delete">Delete</Button>
);
}
export default App;