Редукторы Ionic 3 ngrx / store не получают отправленные действия только в производственном режиме - PullRequest
0 голосов
/ 18 октября 2018

У меня есть приложение Ionic 3 , которое использует веб-сокеты и redux с использованием ngrx / store .Сначала весь мой код работает нормально в режиме разработки.И в браузерах, и на реальных устройствах.

Но при попытке встроить его в режим производства .Действие все еще отправлено, но редукторы не получили отправленное действие, из-за которого состояние приложения не обновляется.

Ниже приведен код моего редуктора.

import { Action } from '@ngrx/store';

const UPDATE_AVATAR = '[Websokcet] New ORDER';
type Type = UpdateAvatar

export class UpdateAvatar implements Action {
  readonly type = UPDATE_AVATAR;
  constructor(public payload: any) { }
}

export function UpdateAvatarReducer(state: any, action: Type) {
  console.log('ACTION RECEIVED:', state, action)
  switch (action.type) {
    case UPDATE_AVATAR:
      return action.payload;
  }
}

и в моем rootReducers

import { UpdateAvatar, UpdateAvatarReducer } from './reducers/uploadAvatar';

export function rootReducer () {
  return {
    reducers: {
      driverUpdateProfile: DriverUpdateProfileReducer,
    },
  }
}

и в моем app.module.ts

import { rootReducer } from '../store/websocket';

// and in the **imports arrays**

StoreModule.forRoot({
  ...rootReducer().reducers
}),

Работает в режиме разработкино это не в производстве.Почему?

Ценю, если кто-то может помочь.Заранее спасибо.

1 Ответ

0 голосов
/ 26 октября 2018

Мне удается решить проблему, изменив способ реализации моих rootReducer и rootActions .Вместо экспорта функции я возвратил объявленные 2 отдельных объекта.

Вот мой старый код ниже моих rootReducer и действий

export default function () {
  return {
    reducers: {
      newLocation: NewLocationReducer,
      newOrder: NewOrderReducer,
      orderTaken: OrderTakenReducer,
      driverUpdateProfile: DriverUpdateProfileReducer,
      driverUpdateAvatar: UpdateAvatarReducer,
      newTransaction: NewTransactionReducer,
      updateTransaction: UpdateTransactionReducer,
      orderNewMessage: OrderNewMessageReducer,
    },
    actions: {
      newLocation: NewLocation,
      newOrder: NewOrder,
      orderTaken: OrderTaken,
      driverUpdateProfile: DriverUpdateProfile,
      driverUpdateAvatar: UpdateAvatar,
      newTransaction: NewTransaction,
      updateTransaction: UpdateTransaction,
      orderNewMessage: OrderNewMessage,
    }
  }
}

и это новый код ниже:

export const rootActions = {
  newLocation: NewLocation,
  newOrder: NewOrder,
  orderTaken: OrderTaken,
  driverUpdateProfile: DriverUpdateProfile,
  driverUpdateAvatar: UpdateAvatar,
  newTransaction: NewTransaction,
  updateTransaction: UpdateTransaction,
  orderNewMessage: OrderNewMessage,
}

export const rootReducer = {
  newLocation: NewLocationReducer,
  newOrder: NewOrderReducer,
  orderTaken: OrderTakenReducer,
  driverUpdateProfile: DriverUpdateProfileReducer,
  driverUpdateAvatar: UpdateAvatarReducer,
  newTransaction: NewTransactionReducer,
  updateTransaction: UpdateTransactionReducer,
  orderNewMessage: OrderNewMessageReducer,
}

Я объявил их в две отдельные переменные, которые, я думаю, более организованы, чем старые.

...