2016-08-31 60 views
2

我正在研究todo redux教程。儘管關於如何將調度發送到正確的減速器,我已經失去了,因爲這個例子結合了減速器。 REDX如何知道將返回值從setVisibilityFilter發送到visibilityFilter減速器?調度到正確的reducer

http://redux.js.org/docs/basics/Reducers.html

export const setVisibilityFilter = (filter) => { 
    return { 
    type: 'SET_VISIBILITY_FILTER', 
    filter 
    } 
} 

const mapDispatchToProps = (dispatch, ownProps) => { 
    return { 
    onClick:() => { 
     dispatch(setVisibilityFilter(ownProps.filter)) 
    } 
    } 
} 

也許它越來越發送到設計都減速。

+0

這個由Redux作者製作的視頻系列可能會幫助你更多地瞭解Redux。 https://egghead.io/lessons/javascript-redux-the-single-immutable-state-tree –

回答

2

有沒有這樣的事情調度到某個reducer。每次你發出一個動作,所有的減速器功能都被執行。確保執行正確的代碼段的唯一方法是確保操作類型的名稱是唯一的,並且完全存在於一個reducer中。

這就是爲什麼最新的流行模式是Redux模塊,您可以使用包含模塊名稱和動作類型名稱的長字符串命名每個動作類型。例如,查看ducks

+0

更具體地說:當你派遣時,執行***單根縮減器功能***。根減速器可能會將一些工作委託給其他功能,在這種情況下,由根減速器決定何時以及如何調用它們。 'combineReducers'實用程序專門調用所有傳入的「切片縮減器」,以給他們一個迴應的機會。 – markerikson

1

調度員不知道誰會得到這些操作,也不關心他。調度員的工作僅限於調度的行動。現在在另一邊減速器選擇到任何行動。

換句話說,分派器就像一個揚聲器,它只是獲取數據並大聲喊出來。和reducer(在switch語句中,或者你在其中實現的任何控制)選擇對哪個動作作出反應。