在 svelte 待办事项应用程序中更新待办事项时出现问题。使用 "store"

a problem in updating todo in svelte todo app. using "store"

我做了一个带有 svelte store 的基本 Todo 应用程序。 总的来说,它可以工作,但是当我想更新 Todo 时 - 它第一次工作,之后就不能工作了。

如果我更新另一个 Todo,第一个可能会再次更新。 我试图找到解决方法,但我不知道。 (我发现我的 updatedId 变量有问题)

这是我的代码: 在 codesandbox

O.K。我知道了。 问题是我在自定义商店中添加了其他未连接到常规商店的 "key-value" 对。 他们的价值没有反应更新! 如果在自定义商店的某些值中没有商店方法(设置、更新、订阅),它们不应该存在! 那是错误的,带有注释的行:

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

我应该做的是从两个选项中选择一个:

  1. 创建另外两个独立的商店,并将变量放入其中。 所以在它们的每一次变化中,Dom 也会更新。商店就像 "global variables" link to that solution

  2. more "elegant" 方法:在所有待办事项对象中执行 "editing" 的另一个键,值为 false ,并在商店中放置一个函数来更改它。 link to that better solution