我用一个苗条的商店做了一个基本的Todo应用。 总的来说,它可以工作,但是当我想更新Todo时-第一次可以工作,之后不要再工作。
如果我更新另一个Todo,则第一个可以再次更新。
我试图找到解决方法,但我不知道。
(我发现我的updatedId
变量存在问题)
这是我的代码: 在codesandbox
中答案 0 :(得分:0)
好我知道了。 问题是我在自定义存储中添加了其他未与常规存储连接的“键值”对。 它们的值不会被动地更新!!! 如果自定义存储中的某些值中没有存储方法(set,update,subscribe),则它们不应该存在! 那是错误,带有注释的行:
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的“ editing”键,并将一个函数更改为存储。 link to that better solution