Reactjs неизменное состояние для изменяемого - PullRequest
0 голосов
/ 27 мая 2018

У нас есть это состояние:

import {Map, Record} from 'immutable';


export interface State {
  _id?: string;
  data: Map<string, any>;
  error: Error;
  loading: boolean;
}


export const iDSS: State = {
  _id: null,
  data: Map({}),
  error: null,
  loading: false
};


export class DatasourceState extends Record(iDSS) {

  constructor(params: State) {
    super(params);
  }

  get<T extends keyof State>(key: T): State[T] {
    return super.get(key);
  }

  set<T extends keyof State, V extends keyof State>(key: T, value: State[V]) {
    return super.set(key, value);
  }

}

У нас есть требование установки динамических ключей в этом состоянии, но из-за неизменности возникает следующая ошибка:

Cannot set unknown key "widget-test-2" on DatasourceState

DatasourceStateв нескольких местах в приложении.Есть ли простой способ, где мы можем сделать DatasourceState изменяемым без изменения остальной части реализации.По сути - мы ищем изменчивый Record.

1 Ответ

0 голосов
/ 30 мая 2018

Вы всегда можете вызвать .toJS() для любой записи immutablejs, чтобы получить объект js

https://facebook.github.io/immutable-js/docs/#/Record/toJS

, также проверить toObject()

https://facebook.github.io/immutable-js/docs/#/Record/toObject

...