Skip to content

不可变数据

fluth支持不可变数据,底层采用limu实现。

Stream

Stream对象的set方法可以immutable的修改节点的数据。

typescript
import { $ } from "fluth";
const promise$ = $({ a: 1, b: { c: 2 } });
const oldValue = promise$.value;

promise$.set((state) => (state.a = 3));
const newValue = promise$.value;

console.log(oldValue === newValue); // false
console.log(oldValue.b === newValue.b); // true

Observable

Observable对象的$then$thenOnce$thenImmediate方法也可以immutable的修改节点的数据。

typescript
import { $ } from "fluth";
const promise$ = $({ a: 1, b: { c: 2 } });
const observer1$ = promise$.$then((state) => (state.a = 3));
const observer2$ = observer1$.$then((state) => (state.a = 4));

console.log(promise$.value === observer1$.value); // false
console.log(observer1$.value === observer2$.value); // false

console.log(promise$.value.b === observer1$.value.b); // true
console.log(observer1$.value.b === observer2$.value.b); // true