개발 이야기/React

Redux

석구석구 2019. 8. 26. 11:31

SPA를 개발하다 보면 데이터 관리가 정말 힘듭니다.

 

아주 오래전, Jquery만을 이용해서 Hash Router SPA를 만든 적이 있었습니다.

 

한 페이지를 만드는 일이야 간단했지만, 페이지간 데이터를 공유하고 이를 관리하는 일은 절대 만만한 일이 아니었습니다.

 

이를 해결하기 위해 글로벌 객체인

 

 var DATA = {} 

 

를 선언하고 여기에 SPA에서 사용하는 데이터들을 몽땅 넣었죠.

 

그리고 Get, Set 함수를 이용해 데이터를 관리했습니다.

 

var DATA = (function() {
  var data = {};
  return {
    set: function(k, v) {
      if (data[k]) {
        console.log('데이터를 덮어씁니다.');
      }
      data[k] = v;
    },
    get: function(k) {
      return data[k];
    },
    all: function() {
      return JSON.parse(JSON.stringify(data));
    },
  };
})();

 

이것은 꽤나 훌륭한 방법이었습니다.

 

A페이지에서 어떤 리스트 데이터가 로드되었다면 B페이지에서도 해당 리스트를 여전히 사용할 수 있었습니다.

 

하지만 페이지가 많아지고 데이터가 복잡해질수록 곧 엄청나게 헷갈리기 시작합니다.

 

직접 SPA를 개발해 보신분은 아실 겁니다. 

 

고통받는 기분을.. ㅠㅜ 무언가 잘못되어간다는 기분이 개발을 할수록 계속 듭니다.

 

또한 MVC 패턴에서는 View와 Model이 N:N의 관계로 정의되기 일수입니다.

 

이러한 상황에서 서로가 서로를 변경하게 될 때 스케일이 조금만 커져도 예측 불가능한 방향으로 데이터의 변화가 이루어지게 됩니다.

 

이러한 문제를 우리는 스토어 혹은 저장소라는 개념으로 해결할 수 있습니다.

 

페이스북에서 발표한 Flux 아키텍쳐죠.

 

Flux 패턴 속에서 데이터의 흐름은 단순해집니다.

 

'개발 이야기 > React' 카테고리의 다른 글

1시간이면 준비되는 MobX  (0) 2020.01.31
React Diffing Algorithm  (0) 2020.01.31
React Router 설정  (0) 2019.08.26
React Life Cycle  (0) 2019.06.15