En el README de react-autosave , se menciona que debería usar useCallback pero no estoy seguro de cómo pasarle la id , ya que la necesito en la mutación.
id & text cambia constantemente en mi caso.
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, }) Estoy usando valtio como administrador de estado global. De ahí es de donde snap.doc.id Pero cada vez, se pasa el primer snap.doc.id debido a useCallback ya que se usa la misma función, por lo que cada vez que muta la misma fila que snap.doc.id permanece igual.
Reproducción completa en la rama react-autosave → https://github.com/deadcoder0904/docs-autosync/tree/react-autosave
Le pasé el doc completo y lo desestructurado en useCallback como:
const updateDraft = useCallback( ({ id, text }: Doc) => { if (id !== '') { updateDocs({ id, text }) } toggleIsSaved(true) }, [snap.doc.id] ) useAutosave({ data: snap.doc, onSave: updateDraft, })Resulta que esto funciona perfectamente bien.