기록
Sass 본문
sass에서는 .scss/.sass 두 확장자를 지원하는데,
각 확장자의 문법이 다르다. 보통 scss 문법이 더 많이 사용된다고 함!
이게 좀 더 자스 객체st
시작하기 node-sass 라는 라이브러리를 설치한다. npm i node-sass
sass -> css로 변환해주는 역할을 함
classnames 라는 라이브러리는 조건부 스타일링을 할 때,
함수 인자에 문자열/배열/객체 등을 손쉽게 조합하여 문자열로 만들 수 있게 해줌
npm i classnames
classNames('foo', 'bar'); // => 'foo bar'
classNames('foo', { bar: true }); // => 'foo bar'
classNames({ 'foo-bar': true }); // => 'foo-bar'
classNames({ 'foo-bar': false }); // => ''
classNames({ foo: true }, { bar: true }); // => 'foo bar'
classNames({ foo: true, bar: true }); // => 'foo bar'
classNames(['foo', 'bar']); // => 'foo bar'
// 동시에 여러개의 타입으로 받아올 수 도 있습니다.
classNames('foo', { bar: true, duck: false }, 'baz', { quux: true }); // => 'foo bar baz quux'
// false, null, 0, undefined 는 무시됩니다.
classNames(null, false, 'bar', undefined, 0, 1, { baz: null }, ''); // => 'bar 1'
props를 받아오고 그 값에 대한 기본값을 설정함.
function Button({ children, size, color }) {
return <button className={classNames("Button", size, color)}>{children}</button>;
}
Button.defaultProps = {
size: "medium",
color: "blue",
};
@mixin @include
는 scss계의 함수같은 느낌,, 반복되는 코드를 줄여준다!
@mixin button-color($color) {
background: $color;
&:hover {
background: lighten($color, 10%);
}
&:active {
background: darken($color, 10%);
}
}
.Button {
&.blue {
@include button-color($blue);
}
...
outline
function Button({ children, size, color, outline }) {
return (
<button className={classNames("Button", size, color, { outline })}>
{children}
</button>
);
}
props로 받아온 outline을 객체 안에 집어 넣고 classNames()에 포함시켰는데,
이 코드의 의미는 outline 값이 true일 때만 button에 outline css 클래스가 적용된다는 의미.
// App.js
<div className="buttons">
<Button size="large" color="blue" outline>
Button
</Button>
<Button color="gray" outline>
Button
</Button>
<Button size="small" color="pink" outline>
Button
</Button>
</div>
...rest props 전달하기
버튼 태그에 클릭이벤트를 넣고 싶음.
근데 일일이 onClick={onClick} 이런 게 번거롭고 귀찮을 때,
function Button({ children, size, color, outline, fullWidth, ...rest }) {
return (
<button
className={classNames('Button', size, color, { outline, fullWidth })}
{...rest}
>
이렇게 {...rest} 를 사용하면 지정한 props를 제외한 값들을 rest 라는 객체에 모아줌!!
이걸 원하는 버튼 태그에 입력해주면, rest 라는 객체안에 있는 값들을 모두 버튼 태그에 설정해줌!
'React.js > 벨로퍼트와 함께 하는 모던 리액트' 카테고리의 다른 글
styled-components (0) | 2021.03.02 |
---|---|
CSS Module (0) | 2021.03.02 |
렌더링! use 시리즈(useEffect, useMemo, useCallback 등) (0) | 2021.03.02 |
useRef로 변수 관리 (0) | 2021.03.02 |
누구든지 하는 리액트 - 2 (0) | 2021.01.12 |
Comments