加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – Redux状态缺少offlinex离线的“离线”部分

发布时间:2020-12-17 17:30:11 所属栏目:安全 来源:网络整理
导读:我在Angular项目中使用 Redux Offline,现在我想在离线模式下启用取消发件箱中的项目.基本上,我只是想在outbox数组上过滤以删除我想要取消/修改的项目. 我的问题是它从我在顶级reducer中收到的状态丢失(未定义).我可以在Redux Dev工具中看到离线,我也可以通过
我在Angular项目中使用 Redux Offline,现在我想在离线模式下启用取消发件箱中的项目.基本上,我只是想在outbox数组上过滤以删除我想要取消/修改的项目.

我的问题是它从我在顶级reducer中收到的状态丢失(未定义).我可以在Redux Dev工具中看到离线,我也可以通过NgRedux.select()和NgRedux.getState()获取它.

在减速器中收到的状态中,还没有出现redux离线的原因吗?我可以添加它,然后通过reducer更改它吗?或者是否有另一个访问和修改发件箱?

的package.json:

"dependencies": {
 "@angular-redux/router": "^7.0.0","@angular-redux/store": "^9.0.0","@angular/animations": "^6.0.3","@angular/common": "^6.0.3","@angular/compiler": "^6.0.3","@angular/core": "^6.0.3","@angular/forms": "^6.0.3","@angular/http": "^6.0.3","@angular/platform-browser": "^6.0.3","@angular/platform-browser-dynamic": "^6.0.3","@angular/pwa": "^0.6.7","@angular/router": "^6.0.3","@angular/service-worker": "^6.0.3","@redux-offline/redux-offline": "^2.3.3","core-js": "^2.5.7","reduce-reducers": "^0.3.0","redux": "^4.0.0","redux-observable": "1.0.0-alpha.2","rxjs": "^6.2.0","rxjs-compat": "^6.2.0","zone.js": "^0.8.26"
},"devDependencies": {
 "redux-devtools-extension": "^2.13.2","@angular-devkit/build-angular": "^0.6.7","@angular/cli": "^6.0.7","@angular/compiler-cli": "^6.0.3","@angular/language-service": "^6.0.3","@types/jasmine": "^2.8.8","@types/jasminewd2": "~2.0.3","@types/node": "^8.10.18","codelyzer": "^4.3.0","jasmine-core": "~2.99.1","jasmine-spec-reporter": "~4.2.1","karma": "~1.7.1","karma-chrome-launcher": "~2.2.0","karma-coverage-istanbul-reporter": "^1.4.3","karma-jasmine": "^1.1.2","karma-jasmine-html-reporter": "^0.2.2","opn-cli": "^3.1.0","protractor": "^5.3.2","ts-node": "~5.0.1","tslint": "~5.9.1","typescript": "~2.7.2"
}

如果您需要更多信息,请写评论.

解决方法

redux-offline动态地注入它自己的reducer,这样你就无法通过顶级reducer访问它. redux-offline通过配置公开它的 queue,这将允许您更新发件箱以删除/添加操作.如果您想在用户离线时删除离线操作,我建议您使用特定操作类型进行离线操作调用(例如“CANCEL_OFFLINE_ACTION”)并在queue.enqueue中处理它以删除您发件箱中的操作不想传播.

这是一个粗略的例子:

// the action to dispatch
const action = {
  type: 'CANCEL_OFFLINE_ACTION',payload: {
    id: 123,},meta: {
    offline: {
      effect: {
        url: ''
      },};

// the custom enqueue action
function enqueue(outbox,incomingAction) {
  return incomingAction.type !== 'CANCEL_OFFLINE_ACTION' ? [...outbox,incomingAction] :
    outbox.filter(
      outboxAction => outboxAction.payload.id !== incomingAction.payload.id,);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读