Reactjs 不可变状态到可变状态
Reactjs immutable State to Mutable
我们有这个州:
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
.
你总是可以在任何 immutablejs 记录上调用 .toJS()
来获取 js 对象
https://facebook.github.io/immutable-js/docs/#/Record/toJS
同时检查 toObject()
https://facebook.github.io/immutable-js/docs/#/Record/toObject
我们有这个州:
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
.
你总是可以在任何 immutablejs 记录上调用 .toJS()
来获取 js 对象
https://facebook.github.io/immutable-js/docs/#/Record/toJS
同时检查 toObject()
https://facebook.github.io/immutable-js/docs/#/Record/toObject