#reactjs #typescript #redux #react-redux #redux-thunk
#reactjs #машинописный текст #сокращение #реагировать-redux #redux-thunk
Вопрос:
Я пытаюсь установить данные через редуктор на этапе инициализации. я сам получаю сообщение об ошибке, например, не могу установить на неизменяемую запись. я должен погуглить, но все равно не нашел никакого решения, пожалуйста, помогите мне.
Вспомогательная модель:
import { Record } from 'immutable';
export const Model = <T>(data: T): Record.Class => {
return Record(data);
};
Модель моего класса:
import { Model } from "./Helpers";
import { ConfirmBox } from './ConfirmBox';
import { Spinner } from "./Spinner";
import { Alert } from "./Alert"
export interface IUtility {
drawerOpen?: boolean;
alert?: Alert;
confirmBox?: ConfirmBox;
spinner?: Spinner;
openSignInModel?: boolean;
openSignUpModel?: boolean;
openProductDetailPageModel?: boolean;
}
export const UtilityModel = Model<IUtility>({
drawerOpen: false,
alert: null,
confirmBox: null,
spinner: null,
openSignInModel: false,
openSignUpModel: false,
openProductDetailPageModel: false,
});
export class Utility extends UtilityModel {
public static DRAWER_OPEN = 'drawerOpen';
public static ALERT = 'alert';
public static CONFIRMBOX = 'confirmBox';
public static SPINNER = 'spinner';
public static OPENSIGNINMODEL = 'openSignInModel';
public static OPENSIGNUPMODEL = 'openSignUpModel';
public static OPENPRODUCTDETAILPAGEMODEL = 'openProductDetailPageModel';
public drawerOpen: boolean;
public alert: Alert;
public confirmBox: ConfirmBox;
public spinner: Spinner;
public openSignInModel: boolean;
public openSignUpModel: boolean;
public openProductDetailPageModel: boolean;
}
Мой редуктор
import { IAppAction, ActionType } from './../actions/Helpers';
import { Utility } from '../state/Utility';
const UtilityReducer = (state: Utility = new Utility(), action: IAppAction): Utility => {
switch (action.type) {
case ActionType.OPEN_DRAWER:
return state.set(Utility.DRAWER_OPEN, true) as Utility;
case ActionType.CLOSE_DRAWER:
return state.set(Utility.DRAWER_OPEN, false) as Utility;
case ActionType.OPEN_ALERT:
return state.set(Utility.ALERT, action.payload) as Utility;
case ActionType.CLOSE_ALERT:
return state.set(Utility.ALERT, null) as Utility;
case ActionType.OPEN_SPINNER:
return state.set(Utility.SPINNER, action.payload) as Utility;
case ActionType.CLOSE_SPINNER:
return state.set(Utility.SPINNER, null) as Utility;
case ActionType.OPEN_CONFIRM_BOX:
return state.set(Utility.CONFIRMBOX, action.payload) as Utility;
case ActionType.CLOSE_CONFIRM_BOX:
return state.set(Utility.CONFIRMBOX, null) as Utility;
case ActionType.OPEN_PRODUCT_DETAIL_PAGE_MODEL:
return state.set(Utility.OPENPRODUCTDETAILPAGEMODEL, true) as Utility;
case ActionType.CLOSE_PRODUCT_DETAIL_PAGE_MODEL:
return state.set(Utility.OPENPRODUCTDETAILPAGEMODEL, false) as Utility;
case ActionType.OPEN_SIGN_IN_MODEL:
return state.set(Utility.OPENSIGNINMODEL, true) as Utility;
case ActionType.OPEN_SIGN_UP_MODEL:
return state.set(Utility.OPENSIGNUPMODEL, true) as Utility;
case ActionType.CLOSE_SIGN_IN_MODEL:
return state.set(Utility.OPENSIGNINMODEL, false) as Utility;
case ActionType.CLOSE_SIGN_UP_MODEL:
return state.set(Utility.OPENSIGNUPMODEL, false) as Utility;
default:
return state;
}
};
export default UtilityReducer;
Приложение не работает из-за этой проблемы, помогите с этим. Большое спасибо
Комментарии:
1. Я не знаком с использованием ImmutableJS для redux, но, возможно, что-то в этом руководстве поможет: redux.js.org/recipes/using-immutablejs-with-redux
2. спасибо за ответ, я пройдусь по этому документу.
3. я удалил неизменяемую модель из своего класса утилит