【发布时间】:2019-09-21 15:39:11
【问题描述】:
我做了一个基本的 Todo 应用程序和一个精简的商店。 一般来说,它可以工作,但是当我想更新 Todo 时 - 它是第一次工作,之后就不再工作了。
如果我更新另一个 Todo,第一个可能会再次更新。
我试图找到如何解决它,我不知道。
(我发现我的updatedId 变量有问题)
这是我的代码: 在codesandbox
【问题讨论】:
标签: svelte
我做了一个基本的 Todo 应用程序和一个精简的商店。 一般来说,它可以工作,但是当我想更新 Todo 时 - 它是第一次工作,之后就不再工作了。
如果我更新另一个 Todo,第一个可能会再次更新。
我试图找到如何解决它,我不知道。
(我发现我的updatedId 变量有问题)
这是我的代码: 在codesandbox
【问题讨论】:
标签: svelte
好的。我得到了它。 问题是我在自定义存储中添加了其他未连接到常规存储的“键值”对。 它们的值不会被动更新!!! 如果在自定义商店的某些值中没有商店方法(设置、更新、订阅),它们不应该在那里! 那是错误的,带有 cmets 的行:
import { writable } from 'svelte/store';
import uuid from 'uuid/v4'
const todos_ = writable([]);
const customTodos={
subscribe: todos_.subscribe,
addTodo: (text)=>todos_.update(todos=>[...todos,{text,id:uuid()}]),
deleteTodo: (id)=>todos_.update(todos=>todos.filter(todo=>todo.id!==id)),
// updating:false,
editTodo:(id,editedText)=>todos_.update(todos=>
todos.map(todo=>todo.id===id ? {...todo,text:editedText}:todo)
),
// updatedId:""
}
export default customTodos
我应该做的是两种选择之一:
创建另外两个单独的商店,并将变量放入其中。 因此,在它们的每次更改中,Dom 也会更新。商店就像“全局变量”link to that solution
更“优雅”的方式:在所有 todo 对象内部执行另一个值为 false 的“编辑”键,并在存储中放置一个函数来更改它。 link to that better solution
【讨论】: