使用 `react-autosave` 时将 `id` 传递给 `useCallback`?
Passing `id` to `useCallback` when using `react-autosave`?
在 README of react-autosave 中提到我应该使用 useCallback
但我不确定如何将 id
传递给它,因为我在突变中需要它。
id
& text
在我的情况下不断变化。
const updateDraft = useCallback(
(newText: string) => {
console.log('updateDraft')
console.log({ id: snap.doc.id, text: newText })
updateDocs({ id: snap.doc.id, text: newText })
toggleIsSaved(true)
},
[snap.doc.id]
)
useAutosave({
data: snap.doc.text,
onSave: updateDraft,
})
我正在使用 valtio
作为全局状态管理器。这就是 snap.doc.id
的来源。但是每次,第一个 snap.doc.id
都会因为 useCallback
而通过,因为使用了相同的函数,所以每次它改变同一行时 snap.doc.id
保持不变。
分支完全复制 react-autosave
→ https://github.com/deadcoder0904/docs-autosync/tree/react-autosave
我将完整的 doc
传递给它并在 useCallback
中对其进行解构,例如:
const updateDraft = useCallback(
({ id, text }: Doc) => {
if (id !== '') {
updateDocs({ id, text })
}
toggleIsSaved(true)
},
[snap.doc.id]
)
useAutosave({
data: snap.doc,
onSave: updateDraft,
})
事实证明,这工作得很好。
在 README of react-autosave 中提到我应该使用 useCallback
但我不确定如何将 id
传递给它,因为我在突变中需要它。
id
& text
在我的情况下不断变化。
const updateDraft = useCallback(
(newText: string) => {
console.log('updateDraft')
console.log({ id: snap.doc.id, text: newText })
updateDocs({ id: snap.doc.id, text: newText })
toggleIsSaved(true)
},
[snap.doc.id]
)
useAutosave({
data: snap.doc.text,
onSave: updateDraft,
})
我正在使用 valtio
作为全局状态管理器。这就是 snap.doc.id
的来源。但是每次,第一个 snap.doc.id
都会因为 useCallback
而通过,因为使用了相同的函数,所以每次它改变同一行时 snap.doc.id
保持不变。
分支完全复制 react-autosave
→ https://github.com/deadcoder0904/docs-autosync/tree/react-autosave
我将完整的 doc
传递给它并在 useCallback
中对其进行解构,例如:
const updateDraft = useCallback(
({ id, text }: Doc) => {
if (id !== '') {
updateDocs({ id, text })
}
toggleIsSaved(true)
},
[snap.doc.id]
)
useAutosave({
data: snap.doc,
onSave: updateDraft,
})
事实证明,这工作得很好。