상태 관리 라이브러리
yarn add redux react-redux
로 설치
Store는 Reducer + State -> UI(컴포넌트) -> Dispatch(action을 가지고) -> Store에 보낸다.
1) useSelector
컴포넌트에서 저장관리소를 조회
const 변수 = useSelector((매개변수) ->{ 매개변수.원하는값 });
2) useDispatch
dispatch + payload
예를 들어, 버튼을 누르면 +1이 되는 counter가 있을 때 원래는 setState를 사용했지만 dispatch를 통해 action객체를 만들어 보내주어야 한다.
리팩토링
세분화된 네이밍 사용하기
모듈명/타입
→ reducer랑 호출하는 부분이랑 이름이 같아야 한다. → 하드코딩 지양
action creator, value
counter.js
action value : 문자열의 경우 변수로 관리해서 코딩해준다.
action creator : 객체를 만들어서 반환해준다.
컴포넌트에서 사용하기 위해 각각 export 해주어야 한다.
payload
전달되는 실체
예제
input에 값을 입력하면 그만큼 payload해주게 만들기
어떤 사람이 만들어둔 패턴
1. Reducer 함수를 export default
2. Action creator 함수들을 export
3. Action type은 app/reducer/ACTION_TYPE
url 슬래시(/) 뒤에 있는 페이지들을 사용하기 편하게 만들어준다.
yarn add react-router-dom
으로 설치
src -> pages -> 페이지 컴포넌트들
-> shared -> Router.js
import { BrowserRouter, Route, Routes } from "react-router-dom";
const Router = () =>{
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
<Route path="/contact" element={<Contact />} />
<Route path="/works" element={<Works />} />
</Routes>
</BrowserRouter>
)
};
export default Router;
=> 메인에서 본인이 만든 Router를 import하여 사용하면 된다.
const navigate = useNavigate();
<button
onClick={() => {
navigate("/");
}}>Home으로 이동</button>
<Link to={'/contact'}>contact 페이지로 이동하기</Link>
처음부터 다시 만들어보면서 복습하고 컴포넌트를 객체지향적으로 만들 수 있게 나눠보려고 한다.
yarn add react-uuid
로 설치