Javascript 如何应用不同类型的快照?
我在我的应用程序中使用不同类型的“待办事项”模型。这些类型通过一个名为“type”的字段实现 我的问题:当我想通过对对象应用快照将我的步骤类型从“清理”更改为“购物”时,我得到了错误: 。。。路径“/type”值“shopping”不可分配给类型:“cleaning” 有没有关于如何实现我的用例的提示 我创建了一个codesandbox示例,说明如何更改类型(只需单击按钮):Javascript 如何应用不同类型的快照?,javascript,mobx-state-tree,Javascript,Mobx State Tree,我在我的应用程序中使用不同类型的“待办事项”模型。这些类型通过一个名为“type”的字段实现 我的问题:当我想通过对对象应用快照将我的步骤类型从“清理”更改为“购物”时,我得到了错误: 。。。路径“/type”值“shopping”不可分配给类型:“cleaning” 有没有关于如何实现我的用例的提示 我创建了一个codesandbox示例,说明如何更改类型(只需单击按钮): 不幸的是,我无法在控制台中显示错误。我认为不可能直接更改子对象的类型,因为您实际上需要一个新的模型实例,因此todos
不幸的是,我无法在控制台中显示错误。我认为不可能直接更改子对象的类型,因为您实际上需要一个新的模型实例,因此todos数组也必须更新其引用 因此,您需要做的是将todo替换为todo:
export const TodoStore = types
.model("TodoStore", {
todos: types.array(Todo),
})
.actions(self => ({
changeToShoppingType: (todo) => {
const snap = getSnapshot(todo);
console.log("snapshot: ", snap);
const newSnap = {};
Object.assign(newSnap, snap, { type: "shopping" });
console.log("newSnap: ", newSnap);
self.todos.splice(self.todos.indexOf(todo), 1, newSnap);
}
}));
检查这个例子
export const TodoStore = types
.model("TodoStore", {
todos: types.array(Todo),
})
.actions(self => ({
changeToShoppingType: (todo) => {
const snap = getSnapshot(todo);
console.log("snapshot: ", snap);
const newSnap = {};
Object.assign(newSnap, snap, { type: "shopping" });
console.log("newSnap: ", newSnap);
self.todos.splice(self.todos.indexOf(todo), 1, newSnap);
}
}));