首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用“autosave`autosave`”时将“to”传递给“`useCallback`”?

在使用“autosave`autosave`”时将“to”传递给“`useCallback`”?
EN

Stack Overflow用户
提问于 2021-12-19 07:22:36
回答 1查看 65关注 0票数 1

反应自省中,有人提到我应该使用useCallback,但我不知道如何将id传递给它,因为我在突变中需要这样做。

在我的例子中,id & text正在不断变化。

代码语言:javascript
复制
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-autosavehttps://github.com/deadcoder0904/docs-autosync/tree/react-autosave上完全繁殖

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-19 08:51:36

我将完整的doc传递给它&在useCallback中对它进行重构,如下所示:

代码语言:javascript
复制
const updateDraft = useCallback(
    ({ id, text }: Doc) => {
      if (id !== '') {
        updateDocs({ id, text })
      }
      toggleIsSaved(true)
    },
    [snap.doc.id]
  )

  useAutosave({
    data: snap.doc,
    onSave: updateDraft,
  })

结果,这一切都很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70409596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档