2016-01-22 34 views
1

在redux中,當我們需要訪問與componentProps沒有直接關係但是由此組件觸發的state屬性時(即:存儲在狀態中的父級父組件ID)我們應該努力的狀態,這部分從觸發事件,即組件傳遞給動作的創造者:Redux動作創建者聲明訪問最佳實踐

onClick={() => doSomething(grandParentId)} 

---- 

function doSomething(grandParentId) { 
    console.log(grandParentId) 
} 

,或者我們應該得到的getState數據與終極版-的thunk?

onClick={doSomething} 

---- 

function doSomething() { 
    return (dispatch, getState) => { 
    console.log(getState().grandParentId) 
    } 
} 

我知道答案聽起來像第一種方法是比較合適的,但我有點感覺的getState與終極版-的thunk會導致不好的做法,我想知道我什麼時候應該使用與否。

回答

2

如果你已經在你的組件中有這些信息,我不明白爲什麼不把它傳遞給你的動作創建者。在我看來,數據流更容易遵循這種方式。

只有當我需要訪問我無法通過操作創建者傳遞的部分狀態樹時,我纔會利用getState()

1

如果數據已經處於redux狀態,那麼我將通過getState訪問它。傳遞的參數越少,IMO就越簡單。

+0

但是不假設數據總是處於狀態? – tomascharad

+0

我不確定你的意思是什麼 – Dylan

+0

你是這樣說的:「如果數據已經處於redux狀態」......據我所知,所有的應用程序數據應該在(或可以從)州。 – tomascharad