리덕스는 상태관리 라이브러리로 상태관리(업데이트, 상호작용 등)를 효율적으로 해주기 때문에 필요하다
만약에 없다면 state를 효과적으로 관리하기 어렵고 불필요한 렌더링들이 발생할 가능성이 크며 오류가 생겼을 경우 찾기가 어렵다
관리 측면으로 필요하다. 리덕스는 상태(state)관리도구로 props, state를 좀더 잘 관리하게 만들어주며 없다면 prop drilling이 발생한다. = 이런 문제로 인하여 페이스북에서 만든 redux!
useSelector
useSelector를 사용함.
const target = useSeletor((state)=> state.target)
function target({
useSelector()
})
화살표함수는 return을 생략할 수 있는데, 습관적으로 사용하다보니 일반 함수 구현하는 것도 필요하다.
const users = useSelector(state ⇒
return state.users) ===⇒ 콜백함수
const users = useSelector(state ⇒ {
state.users
}) ===⇒ return 생략
const user1 = useSelector(function(satae){
return state.users
});
useDispatch를 통해 action을 담아 reducer에 보냅니다. 그리고 action type에 따라 action payload을 활용해 상태를 변경하는 로직을 수행합니다.
redux thunk는 비동기 작업을 할 때 쓰는 미들웨어의 종류로 보일러 플레이트 설정(꼭 써야하는 코드의 수)이 길고 귀찮다는 단점이 있다(유지보수에 많은 손이 간다).
배열에 변수명이 들어가고 해당 변수에 변화가 생기는것을 감지해 useCallback, useEffect 와 같은 함수 블록 안에서 로직을 처리하고 리렌더링이 진행됩니다
key중점적으로 구분하기 때문에 임의로 할당되기 때문에 key props를 내리는 것. 그래서 버츄얼 돔이 인식할 수 있도록한다.