В состоянии Redux отсутствует "автономная" часть из автономного редукса - PullRequest
0 голосов
/ 11 июня 2018

Я использую Redux Offline в своем проекте Angular, и теперь я хочу включить отмену элемента в папке «Исходящие» в автономном режиме.По сути, я просто хочу отфильтровать массив исходящих сообщений, чтобы удалить элементы, которые я хочу отменить / изменить.

Моя проблема в том, что он отсутствует (не определено) в состоянии, которое я получаю в редукторе верхнего уровня.Я могу видеть автономно в инструменте Redux Dev, и я также могу получить его через NgRedux.select () и NgRedux.getState ().

Существует ли причина, по которой в автономном режиме, полученном вредукторы?Могу ли я добавить его, а затем изменить его через редукторы?Или есть другой способ доступа и изменения исходящих сообщений?

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"
}

Пожалуйста, напишите комментарий, если вам нужна дополнительная информация.

1 Ответ

0 голосов
/ 25 июня 2018

redux-offline вводит свой собственный редуктор динамически, поэтому вы не сможете получить к нему доступ через редукторы верхнего уровня.redux-offline выставляет свою очередь через конфигурацию, которая позволит вам обновить исходящие сообщения для удаления / добавления действий.Если вы хотите удалить автономное действие, пока пользователь находится в автономном режиме, я бы предложил сделать автономный вызов действия с определенным типом действия (например, '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,
    );
}
...