代码之家  ›  专栏  ›  技术社区  ›  Rakesh Goyal

ReactJS不可变状态到可变状态

  •  2
  • Rakesh Goyal  · 技术社区  · 7 年前

    我们有这样的状态:

    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 已在应用程序的多个位置使用。有什么简单的方法可以做吗 数据源状态 不改变其他实现的情况下是可变的。本质上-我们正在寻找一个可变的 Record .

    1 回复  |  直到 7 年前
        1
  •  0
  •   Lukas Liesis    7 年前

    你可以随时打电话 .toJS() 在任何不可变的JS记录上获取JS对象

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

    同时检查 toObject()

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