2017-09-04 155 views
1

我必須做兩個放置。渲染都非常依賴於對方。意味着第一次放置必須與第二次放置同時發生。目前,我確實每個put都會導致相關組件的重新呈現。同時意味着,store.subscribe必須等到put發生時才能觸發。我可以爲此創建具體操作,但我想知道是否有批量投放的方式。我試圖put.resolve和還有以下:批量放置 - 確保store.subscribe不會更新,直到完成所有放置完成

yield all([ 
    put(updateEntity(ENTITYS.COMMENT, id, comment)), 
    put(updateEntity(ENTITYS.STORY, storyId, entity => ({ commentIds:entity.commentIds.map(commentId => commentId === id ? comment.id : commentId) }))) 
]); 

但這並沒有工作,store.subscribe被每個put後觸發。

回答

2

我們使用redux-batched-actions爲此。

建立之後,你就去。

import { batchActions } from 'redux-batched-actions'; 

yield put(batchActions([ 
    updateEntity(ENTITYS.COMMENT, id, comment), 
    updateEntity(ENTITYS.STORY, storyId, entity => ({ commentIds:entity.commentIds.map(commentId => commentId === id ? comment.id : commentId) })), 
])) 
+0

是否有內置任何內容,比如'put.resolve'?非常感謝您的回覆,我正在等待一下。 – Noitidart

+0

非常感謝您對github的支持。我會嘗試'redux-batch' - https://github.com/manaflair/redux-batch - 在我嘗試使用redux-batched-actions之前,似乎更簡單一點,我可以放置數組。 – Noitidart

+0

我爲後人鏈接Github問題 - https://github.com/redux-saga/redux-saga/issues/1161 –

相關問題