2016-06-14 4 views
0

저는 반응 네이티브, 반응 - 환원, 환원 루프 및 다양한 다른 것들을 사용하는 pepperoni-app-kit을 사용하고 있습니다.한 redux 오리에서 다른 오리를 옮기는 법?

저는 인증을 담당하는 사람이 Redux Duck입니다. 로그인이 완료되면 중요한 세션 정보가 상점의 ['auth', 'env'] 섹션에 기록됩니다.

데이터 목록 탐색을 담당하는 찾아보기라는 다른 오리가 있습니다. 그 오리는 서버 요청을하기 위해 env 데이터에 액세스해야합니다.

상태의 나무는 다음과 같습니다

state 
    +-- auth 
     +-- env 
    +-- browse 
     +-- ... 

내가보기에 connect()['auth','env'] 데이터를 내 BrowseViewContainer를 사용하여 내 BrowseView에 아무 문제 ['auth','env']을 통과하지하는 방법을 알아낼 수 있습니다. 예 :

connect(
     state => ({ 
     env: state.getIn(['auth', 'env']), 
     ... 
     }) 
    )(BrowseView) 

그러나, 나는 오리가 env 필요로하는 HTTP 요청을 만드는 하나이기 때문에 내 BrowseView의 env, 나는 내 검색 오리에 필요한 필요하지 않습니다.

내 상태 정보 (env)를 상태 트리의 한 부분 (auth)에서 다른 정보 (browse)로 전달하는 가장 좋은 방법은 무엇입니까? 아니면 다른 오리에서 더 쉽게 접근 할 수 있도록 auth에있는 것보다이 정보를 저장하는 더 좋은 곳이 있습니까?

답변

1

redux-thunk가 이것을 수행하는 한 가지 방법이며, pepperoni-app-kit는 이미 redux-thunk를 사용하고 있습니다.

내 작업 작성자에서 작업을 반환하는 대신 썽크 개체를 반환하고 썽크가 전체 상태 트리에 액세스 할 수 있습니다.

export function list() { 
    return (dispatch, getState) => { 
    const env = getState().get('auth').get('env') 
    dispatch({ 
     type: LIST_RESPONSE, 
     payload: getList(env) 
    }) 
    } 
} 
: 썽크를 사용

export function list() { 
    const env = ??? // where to get env? 
    return { 
    type: LIST_RESPONSE, 
    payload: getList(env) 
    } 
} 

그리고 다시 하나

예를 들어, 내 원래 액션 제작자처럼 보였다