首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redux状态在redux脱机中缺少“脱机”部分。

Redux状态在redux脱机中缺少“脱机”部分。
EN

Stack Overflow用户
提问于 2018-06-11 13:20:24
回答 1查看 468关注 0票数 4

我在我的角度项目中使用剩馀离线,现在我想在脱机模式下启用取消发件箱中的项。基本上,我只想在发件箱数组上筛选以删除我想要取消/修改的项。

我的问题是,我在顶层减速器中接收到的状态缺少(未定义)。我可以在Redux工具中看到脱机,也可以通过NgRedux.select()和NgRedux.getState()获得它。

是否有理由使redux脱机不在减速机接收的状态中?我可以把它加进去,然后通过减速机来改变它吗?或者是否还有其他人可以访问和修改发件箱?

package.json:

代码语言:javascript
复制
"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"
}

如果你需要更多的信息,请写一个评论。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-25 09:09:49

redux-offline动态地注入它自己的还原器,所以您将无法通过顶级减速器访问它。redux-offline通过配置公开它的队列,这将允许您更新发件箱以删除/添加操作。如果您想在用户脱机时删除脱机操作,我建议使用特定的操作类型(例如'CANCEL_OFFLINE_ACTION')进行脱机操作调用,并在queue.enqueue中处理它,以删除不想传播的发送框中的操作。

下面是一个粗略的例子:

代码语言:javascript
复制
// 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,
    );
}

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50798722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档