redux, react에 대한 생각

김용희·2022년 5월 2일
0

react 는 결국 한 페이지
태그안에 태그안에 태그로 구성되어있는데
프롭이 상위컴포넌트에서 하위컴포넌트로 내려올 수 밖에 이유는
Scope 변수의 영역 때문인데
하위컴포넌트 변수의 값이 하위 컴포넌트 밖에 상위컴포넌트에는 존재할 수 없기 때문에, 범위가 닿지 않기 때문에
프롭스는 위에서 아래로 내려오는 것

그래서 redux 는 전역 페이지인 _app에 최상위로 감싸준다
그걸 하나의 index.hmtl 에 공유 함으로써 Scope가 가장 밖에 위치하므로 전역에서 쓸 수 있는 것이다.

리덕스는 단순히 리덕스만 쓸수도있고 리덕스와 리덕스-사가와 동시에 동기 비동기 통신을 진행 할 수 있다.
사가의 작동원리는 리덕스 요청 함수를 소환 시킴과 동시에 연쇄적으로 사가함수도 실행시킨다.
사가 함수 안에는 비동기 함수도 들어있다.
비동기 사가 함수가 실행이 되면 비동기 호출의 결과값이 성공 or 실패가 나오는데
그 성공한 값을 리덕스에 다시 저장시킨다 .
그래서 사가에서는 항상 요청, 성공, 실패로 나눈 이유가 promise처럼 비동기 값이 그렇게 나뉘기 때문이다.
(하지만 요청,성공만 설정해도 잘 작동하긴 하지만 reudx-devtools에서 확인하기위해 실패 reducer도 설정한다)

개발환경에서 미들웨어로 사가미들웨어가 걸려져 있다고 해서 반드시 사가함수를 사용할 필요가 없다
단순 리덕스를 사용하면 action 값안에 payload가 존재하는데 이 값이 바로
내가 리덕스에 저장할 값인데 보통 payload에는 비동기 통신의 결과값을 저장 시킴으로써
그 결과를 리덕스에 저장한다 .

리덕스 퍼시스트는 내가 만든 리듀서를 persist와 합친다
그 값을 스토어의 리듀서 값으로 설정한다
그 합친 스토어를 _App으로 가져와서 최상위 태그인 PersistGate로 감싼다

새로고침시 reducer 함수가 아닌 persist 함수가 요청함수로 실행하면서
REHYDRATE가 실행되서 기존의 상태값이 새로고침에도 불구하고 사라지지 않고 보존된다.

profile
He threw his knapsack over the brick wall

0개의 댓글