2016-10-17 7 views
0

캘린더 앱을 만들고 있습니다.Redux, redux 매장 외부에 데이터 저장

사용자가 다음 달로 이동할 때 데이터 가져 오기 작업을 시작하려고합니다.

실행하려는 작업 목록은 본질적으로 동적이며 현재 탑재 된 구성 요소에 따라 다릅니다.

나는 현재 (모듈에서) 목록에서 화재로 작업 목록을 저장하고있어

은 내가 REDUX 저장소의 외부 데이터를 저장하여 기존하지 뭔가를하고 있어요 느낍니다.
그러나 나는 어딘가에 redux 저장소가 직렬화 할 수있는 것을 보관해야한다고 읽었습니다. 그리고 내 행동 (실제로는 redux-thunk에서 사용할 액션 제작자)은 직렬화 할 수 없습니다.

그래서 질문은 왜하는 경우

  1. , 그것은 REDUX 저장소의 외부에 데이터를 저장하는 나쁜 생각입니까?
  2. 왜 비영리 데이터를 redux 저장소에 저장하는 것이 좋지 않은가요?

(I 목록에 저장) 액션 작성자는 코드의 데이터되지 않습니다

function foo(params) { 
    var url = "some-url" 
    return (dispatch, getState) => { 
    fetch(url, params).then(..).then(dispatch(someAction)) 
    } 
} 

답변

0

귀하의 목록에있는 것 같습니다. 그것은 모든 코드가 실제로있는 명령 목록입니다. 이것을 국가 외부에 저장할 수 있습니다.

하지만 목록은 JavaScript 여야합니다. if으로 분기하고 복잡한 튜링 (Turing) 완전 동력학에 switch을 사용할 수 있습니다. 그것은 단지 깡패 액션 작성자 일 것입니다.

상태가 직렬화되어야하는 이유는 다음과 같습니다. 직렬화 할 수있는 이유입니다. 상태를 직렬화 할 수있는 도구와 모듈이 있지만 선택 사항입니다. 그러나 국가가 데이터가되도록합니다.

즉, Immutable.js를 사용할 때 state는 이제 복잡한 객체입니다. 여전히 serialize 할 수는 있지만 JSON.stringify을 사용하는 것은 아닙니다. 따라서 함수를 작성할 수 있다면 상태를 직렬화 할 수있는 모든 함수가 상태를 직렬화 할 수 있다고 주장 할 수 있습니다.

0

현재 취하고있는 접근 방식에 기술적으로 "잘못된"것은 없지만 약간의 반 패턴입니다. 일반적으로 특정 조건을 기반으로 일부 논리를 실행하려면 배열에서 호출 할 함수를 저장하여 수행하지 않습니다. 위의 대답에서 지적한대로 물론 ifswitch을 사용하므로 여기서는 사용하지 마십시오.

비동기 동작을위한 미들웨어를 추가하고 사용자가 다음 달로 이동할 때 전달되는 동작을 가져 오지 않는 이유는 무엇입니까? 이 미들웨어는이 액션에 대한 핸들러를 호출하며, 그 안에 당신이 원하는 다른 액션을 디스패치 할 수 있습니다. 이것은 어쨌든 나에게 깨끗한 방법 같다.

관련 문제