리액트 실습 프로젝트 스케폴딩은 CRA기반으로 진행하였다.
이외에도 CRA가 특별한 설정을 햇기 때문에 다양한 스타일 적용이 가능하다.
css
scss
=> 설치 방법은
npm i sass --save-dev
이렇게 설치하는 이유는 sass가 개발 과정에서만 필요하고, 실제 배포시에는 컴파일된 CSS 파일만 있으면 되기 때문! => 개발 의존성인 devDependency에만 설치하면된다!
CSS Modules
=> 리액트에 내장된 CSS 모듈이다.
CSS in JS
클래스명 기반의 UI 라이브러리
중첩 이름 충돌방지
scss, styled-components 등은 -D 키워드 붙여서 설치 ⇒ devDependency로
js파일에 → css넣는것은 웹팩이나 기타로 가능하나,
css파일 → js를 넣는 것은 안됨
styledComponent는 props 스타일링이 가능하다
리스트렌더링 시 key 필요
리액트가 리스트를 다룰때 key 라는거.
key값에 유일한 값을 넣어줘야한다.
근데 보통 key에 인덱스값을 넣지 말라고 한다. 리액트는 인덱스비교를 통해 값이 변화한것을 알게되므로.
⇒ 값이 달라지더라도 인덱스가 그대로면 변화안한것으로 인지하는?
⇒ 그냥 유일한 값을 가지는게 베스트!
부수효과를 처리하기 위한 리액트 훅이다.
useEffect(() => {
// 2가지를 쓸 수 있음
// 부수효과
// 클린업함수
return () => {
}
}, [someValue])
useEffect(() => {
// 여기에 부수 효과를 수행하는 코드를 작성합니다.
return () => {
// 여기에는 컴포넌트가 언마운트되기 전, 또는 업데이트되기 전에 실행되는 '정리(clean-up)' 코드를 작성합니다.
};
}, [dependencies]); // 여기에는 부수 효과를 유발할 의존성들을 추가해요.
=> Promise.all
같은인풋이 들어오면 → 같은아웃풋이 나오는게 보장되는함수
사이드이펙트가 없는
⇒ 예측가능한 컴포넌트를 만들수있다.
JSX 내부에서 직접 문자열 템플릿을 사용할 수 있습니다
function ImageComponent() {
const baseUrl = "https://example.com";
const path = "/images";
const query = "?id=123";
// 리턴문 내에서 직접 변수 결합
return (
<img src={`${baseUrl}${path}${query}`} alt="description" />
);
}