Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs RxJS丢弃重复请求_Reactjs_Redux_Rxjs_Redux Observable - Fatal编程技术网

Reactjs RxJS丢弃重复请求

Reactjs RxJS丢弃重复请求,reactjs,redux,rxjs,redux-observable,Reactjs,Redux,Rxjs,Redux Observable,在获取帖子时,某些帖子可能是由同一用户发布的,因此多次获取同一用户是冗余的。一个职位具有以下特点: userId id 标题 body 以下是我的用户epic: const fetchUserEpic = (action$, store) => action$ .ofType(UsersActions.FETCH_USER) .mergeMap(action => { const users = store

在获取帖子时,某些帖子可能是由同一用户发布的,因此多次获取同一用户是冗余的。一个职位具有以下特点:

  • userId
  • id
  • 标题
  • body
以下是我的
用户
epic:

const fetchUserEpic = (action$, store) =>
    action$
        .ofType(UsersActions.FETCH_USER)
        .mergeMap(action => {
            const users = store
                .getState()
                .usersStore.get('users')
                .toJS()

            // Check whether user is already in the store
            if (users[action.payload]) {
                return of(UsersActionCreators.loadCachedUser())
            }

            // Fetch user (and catch errors)
            return ajax
                .getJSON(URL + '/users/' + action.payload)
                .map(res => UsersActionCreators.fetchUserFulfilled(res))
                .catch(err => of(UsersActionCreators.fetchUserRejected(err)))
        })
在我当前的epic中,对于帖子的初始
获取
,我的缓存将不起作用,但只能用于以后的请求


我相信我的epic应该只保留(相同!)用户的第一个请求,并删除其余的请求,直到用户被抓取。如果有更好的策略,请提出建议。

您引用的是一种效果中的状态,这种效果通常是不好的形式,并且会产生不好的结果。您应该重新构造内容,以便有效负载包含缓存的用户,并以这种方式检查缓存。@bryan60那么,如果我在某个组件的
componentDidMount
中分派
FETCH\u USER
,我是否也应该在那里检查用户是否已经存在?(而不是在史诗中)