2016-06-14 46 views
0

我使用的是pepperoni-app-kit,它使用react-native,react-redux,redux-loop和其他各種東西。我有一個Redux Duck負責認證。登錄完成後,會將一些重要的會話信息寫入商店的['auth', 'env']部分。如何從一隻redu鴨傳遞狀態到另一隻?

我還有一個叫做Browse的鴨子,負責瀏覽數據列表。該鴨子需要訪問env數據才能發出服務器請求。

狀態樹是這個樣子:

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

我能弄清楚如何使用我的BrowseViewContainer到connect()['auth','env']數據視圖通過['auth','env']我BrowseView沒有問題。例如:

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

不過,我不需要在我的BrowseView的env,我需要在我的瀏覽鴨肉,因爲鴨肉是一個製作需要的env http請求。

對於我從狀態樹的一個部分(auth)傳遞狀態信息(env)到另一個部分(browse)的最佳方式是什麼?或者,還有一個更好的地方可以存儲這些信息,而不是auth,這樣它可以更容易地從其他鴨子那裏訪問?

回答

1

事實證明,redux-thunk是這樣做的一種方式,而pepperoni-app-kit已經在使用redux-thunk。

不是從我的動作創建者返回動作,而是返回一個thunk對象,並且thunk可以訪問完整的狀態樹。

例如,我原來的行動的創建者看起來像:

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

而重寫一個使用的thunk:

export function list() { 
    return (dispatch, getState) => { 
    const env = getState().get('auth').get('env') 
    dispatch({ 
     type: LIST_RESPONSE, 
     payload: getList(env) 
    }) 
    } 
} 
相關問題