在 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
我应该做的是从两个选项中选择一个:
创建另外两个独立的商店,并将变量放入其中。
所以在它们的每一次变化中,Dom 也会更新。商店就像 "global variables" link to that solution
more "elegant" 方法:在所有待办事项对象中执行 "editing" 的另一个键,值为 false ,并在商店中放置一个函数来更改它。 link to that better solution
我做了一个带有 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
我应该做的是从两个选项中选择一个:
创建另外两个独立的商店,并将变量放入其中。 所以在它们的每一次变化中,Dom 也会更新。商店就像 "global variables" link to that solution
more "elegant" 方法:在所有待办事项对象中执行 "editing" 的另一个键,值为 false ,并在商店中放置一个函数来更改它。 link to that better solution