Redux
tech

Redux

Redux  (React 없이도 사용할 수 있는 상태 관련 라이브러리)

Redux의 필요성

→ 자식 컴포넌트에서 다른 자식 컴포넌트로 state를 전달해줄 때, 부모 컴포넌트에 끌어올리기를 하여 사용한다. 한 두가지의 컴포넌트라면 괜찮지만, 수백개의 컴포넌트라면 상태관리는 매우 복잡해진다. 이에 Redux를 이용한면 상태관리에 용이해진다.

 

장점
➀ 상태를 예측 가능하게 만들어준다.
➁ 유지보수
➂ 디버깅에 유리하다(action과 state log기록 시)
➃ 테스트를 붙이기 쉽다.
Redux의 3가지 원칙
➀ 항상 같은 곳에서 항상 동일한 데이터를 가지고 온다. 
➁ state는 읽기 전용이다.
➂ 변경은 순수함수로만 가능하다.

 

- Store : 상태가 관리되는 오직 한 공간 store 안에 필요한 state를 두고 스토어 안에 접근해서 가지고 온다.

- Action : JS 객체 store에 state를 운반하는 역할을 하며, 하나의 객체로 표현된다.

함수를 생성해 아래 객체를 리턴하여 Action을 생성한다.

{
//! type은 필수로 가지고 있어야한다.
  type: "ADD_TODO", 
  data: {
    id: 0,
    text: "블로그 작성"
  }
}

- Reducer : 이 곳을 거쳐 현재 상태와 Action을 이용해 다음 상태를 만들어 낸다.

//! 2가지의 파라미터를 가진다.
const blogReducer = (state = initialState, action) => {
  switch (action.type) {
    case ADD_TO_BLOG:
      return Object.assign({}, state, {
        blogcontent: [...state.blogcontent, action.payload]
      })
    default:
      return state;
  }
}

Reducer의 Immutability(불변성) 때문에 복사해서 사용한다.

기억하기 ! Action 객체는 Dispatch에게 전달되고, Dispatch는 Reducer를 호출해서 새로운 state를 생성한다.

- Disfatch : Action을 전달하는 메소드

- useSelector() : 컴포넌트와 state를 연결하는 역할

- useDispatch() : Action 객체를 Reducer로 전달해주는 메소드

 


Ref.

◾️ 리덕스 공식문서 ( https://ko.redux.js.org/introduction/getting-started

'tech' 카테고리의 다른 글

DataStructure & Algorithm  (0) 2021.06.11
개발 관련 공식문서, 참고 링크  (0) 2021.06.07
props와 state  (0) 2021.06.06
함수 컴포넌트와 클래스 컴포넌트  (0) 2021.06.04
정규 표현식 Regular expressions  (0) 2021.06.04