在反应自省中,有人提到我应该使用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上完全繁殖
发布于 2021-12-19 08:51:36
我将完整的doc传递给它&在useCallback中对它进行重构,如下所示:
const updateDraft = useCallback(
({ id, text }: Doc) => {
if (id !== '') {
updateDocs({ id, text })
}
toggleIsSaved(true)
},
[snap.doc.id]
)
useAutosave({
data: snap.doc,
onSave: updateDraft,
})结果,这一切都很好。
https://stackoverflow.com/questions/70409596
复制相似问题