如何使用可观察值和计算值创建 mobx class 的深层副本?

How do I create a deep copy of a mobx class with observables and computeds?

我想创建一个具有 mobx 可观察和计算属性的对象的深层副本。

目标是为本地编辑创建副本项目,可以提交或丢弃。

我找到了这种行为的一个例子,但它来自 mobx-state-tree:

如何在 mobx 中实现相同的行为?

您可以使用 mobx-utils 包中的 createViewModel

例子

class Todo {
  @observable firstName = "Foo";
  @observable lastName = "Bar";
  @computed get fullName() {
    return `${this.firstName} ${this.lastName}`;
  }
}

const todo = new Todo();
const todoCopy = createViewModel(todo);

todoCopy.firstName = "Baz";

// ...

// Submit the changes to the original todo
todoCopy.submit();