2017-09-04 9 views
1

私は2つのプットをしなければなりません。レンダリングは両方とも互いに強く依存する。最初のputが2番目と同時に発生しなければならないことを意味します。現在、すべての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

お世話になりました。ありがとうございました。私はreducex-batchアクションを試す前に 'redux-batch'(https://github.com/manaflair/redux-batch)を試してみるつもりです。 – Noitidart

+0

私は後世のためにGithubの問題をリンクしています - https://github.com/redux-saga/redux-saga/issues/1161 –

関連する問題