【问题标题】:Reactjs immutable State to MutableReactjs 不可变状态到可变
【发布时间】:2018-11-06 01:15:39
【问题描述】:

我们有这个状态:

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。

【问题讨论】:

    标签: reactjs react-redux immutable.js


    【解决方案1】:

    您可以随时在任何 immutablejs 记录上调用 .toJS() 来获取 js 对象

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

    还要检查toObject()

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-21
      • 2022-01-10
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多