也許我在想這個錯誤,但是我使用redux-thunk的一個常見模式是返回一個promise,以便在某些事情完成或失敗時我可以在容器對象中執行一些額外的操作。從Redux返回Promise Observable
使用咚爲例:
行動者:
const action = ({ data }) => (dispatch) =>
fetch(`some http url`)
.then(response => {
if(response.ok) {
return response.json();
}
return Promise.reject(response);
})
某處在連接組件:
this.props.action("Some Data")
.then(console.log)
.catch(error => console.error("ERROR"));
是否有這樣做的清潔方法在Redux-Obs中有類似的東西ervable/Rxjs?基本上從行爲中返回一個承諾,稱爲史詩,當觀察結束後返回解析或拒絕。
可能會回答我自己的問題,但是如果行動中存在不可呈現的副作用,情況如何?使用上面的例子,假設我們想在'isPending'從true切換到false(從史詩取得完成)之後調用組件的'this.someInFunc()'。然後我們必須利用像componentWillReceiveProps()這樣的生命週期鉤子,並檢查reducer中的道具是否改變。 (?) – dpaulus
每個人都沒有規則,但聽起來像屬於你的史詩般的邏輯。除了保持私有內部狀態的通用組件外,其他組件不應該包含那樣的業務邏輯。他們渲染DOM,並響應UI事件的調度動作,然後根據商店的狀態和道具重新渲染 - 就是這樣。 – jayphelps
如果你想執行一個副作用,那麼完成後再做另一個,這對史詩來說是成熟的東西。發出一個單獨的動作來踢一連串的副作用,將在一個或多個史詩中處理。 – jayphelps