我想有,可以得到當前狀態做一些邏輯與它的功能,而無需通過參數的函數傳遞當前狀態。吸氣劑在終極版的行動 - 陣營本地
這裏是我的榜樣。
在我的操作文件,我有:
export const addToSearchHistory = (newSearch) => ({type: ADD_TO_SEARCH_HISTORY, newSearch})
export const addToCardHistory = (newCard) => ({type: ADD_TO_CARD_HISTORY, newCard})
再舉例來說,我想有一個「吸」功能,告訴我如果「搜索歷史」已經達到10項。因此,我所做的是:
export const searchHasMaxHistory =() => (dispatch, getState) => {
var state = getState()
search = state.search
return search.history == 10 ? true : false
}
我綁定與bindActionCreators其他的「真正的」行動這一功能:
const mapDispatchToProps = (dispatch) => {
return bindActionCreators({
addToSearchHistory,
addToCardHistory,
searchHasMaxHistory
}, dispatch)
}
所以我會因爲任何行爲的正常訪問。它運作良好,並且完全符合我的要求。
但真正的問題是,它是反模式綁定它像一個動作,但它不返回一個動作?我可以通過這樣做遇到問題或任何問題嗎?有沒有一個「正確」的解決方案來做到這一點?
mapDispatchToProps將您的函數包裝在調度調用中。如果您的動作創建者(searchHasMaxHistory)將「返回search.history == 10?true:false」,那麼將返回該返回值。 Dispatch只是用來發送一個動作(普通對象),它會改變你的應用程序的狀態。在這種情況下,它不會因爲你的減速器沒有處理動作:bool(true/false) –