2017-08-10 109 views
0

綜觀如何使用mapDispatchToProps大多數的例子遵循下面的模式,與dispatch返回一個對象作爲參數的函數的例子:陣營終極版咚與mapDispatchToProps

const mapDispatchToProps = (dispatch) => { 
    return({ 
     someFunc: (arg) => {dispatch(someFunc(arg))} 
    }) 
} 

我的問題是,如果我所有的行動使用thunk,這意味着他們都能獲得dispatch反正,爲什麼我需要使用地圖功能上面的例子中的道具我containers

實驗,我已經想通了,似乎工作的另一種方式後,但林不知道這是否是最好的做法...

Main.jsx

import * as mainActions from '../actions/mainActions' 
import * as menuActions from '../actions/menuActions' 

const actionsToMap = {...mainActions, ...menuActions} 
export default connect(mapStateToProps, actionsToMap)(Main) 

這有什麼錯用這種方法?

+0

我想你會得到你的答案從這個https://stackoverflow.com/questions/41670146/why-is-there-no-need-for-a-mapdispatchtoprops-function-here/41671030#41671030。實際上連接的第二個參數需要一個函數或一個對象 –

回答

1

這兩種方法都是正確的,當您想將某些動作創建者傳遞給不知道Redux的組件時,也可以使用bindActionCreators,並且您不希望將調度或Redux存儲傳遞給它。從技術上講,這是唯一的使用情況吧。

documentation拉它,mapDispatchToProps可以是一個函數或對象。

我想你的第一種方法是良好的文檔,作爲一個可以很容易地看到你正在使用您的組件的動作創作者的簽名,而無需導航到行動的創建者文件。除此之外,我很好使用對象(你的第二個方法)在大多數情況下。

希望這會有所幫助!