簡體   English   中英

從 redux-saga 獲取回調

[英]Getting callbacks from redux-saga

我正在用 Dispatch 在傳奇中觸發 function。 Saga 可以在組件完成所有工作后向我發送組件內部的信息嗎? 實際上,我會用一個簡單的例子來解釋我想要做什么,請不要笑,我相信這不會奏效。

dispatch({
  type: 'triggerApiCallInSaga'
}).then(res => doSomething(res.payload));

我想根據我所做的查詢對組件進行更改。 我實際上想用 redux 來維持這個,但我擔心我的 state 會膨脹。 此外,通過 redux 檢查關閉模式對我來說似乎很愚蠢。

簡而言之,我想從 saga 接收信號並在組件中看到它。 我可以為它做一個聽眾嗎? 或者 saga 有沒有辦法做到這一點? 雖然我搜索了,但我找不到正確的結果。 redux-sagas 回調(又名 sagas 和 setState)我遇到了與我的問題類似的問題,但在這里我遇到了一個我不明白的否定答案。

謝謝你。

您鏈接的答案是正確的,傳奇與組件通信的預期方式是通過更新 redux 存儲。 添加 promises/callbacks 是一種反模式,因為每個動作都可以由 0-n sagas 處理 - 當然你可能知道在你的情況下它只是一個 saga,但框架不保證以任何方式,因此它可以引導以后遇到一些意想不到的問題。

也就是說,即使它是一種反模式並不意味着你不能這樣做。

更簡單的方法是向操作添加回調,例如

// component
const callback = data => console.log(data)
dispatch({type: MY_ACTION, callback})

// saga
yield takeEvery(MY_ACTION, function*(action) {
  action.callback({foo: 'bar'});
})

如果您更喜歡 Promise,那么僅使用 saga 庫就無法輕松做到這一點,但是有些軟件包可以添加此功能,例如: https://github.com/adobe/redux-saga-promise

這個問題的理想解決方案是在useReducer鈎子上運行一個 saga,這樣您就不必將組件特定的 state 添加到 redux 商店,而只需使用組件 Z9ED39E2EA931586B56A985A69EZEF。 有一些嘗試這樣做,但不幸的是, react 仍然缺少一些功能,這些功能可以讓我們可靠地做到這一點而不會引入其他問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM