fix: restore selectedNoteId as state for re-render, keep ref for content

This commit is contained in:
Hermes
2026-08-01 13:11:31 +00:00
parent 7776668269
commit d9000c9f76
+5 -5
View File
@@ -80,7 +80,7 @@ const NoteTitleInput = memo(function NoteTitleInput({ noteId, initialTitle }: {
function NotesPage() { function NotesPage() {
const queryClient = useQueryClient(); const queryClient = useQueryClient();
const [search, setSearch] = useState(""); const [search, setSearch] = useState("");
const selectedNoteIdRef = useRef<string | null>(null); const [selectedNoteId, setSelectedNoteId] = useState<string | null>(null);
const [showBacklinks, setShowBacklinks] = useState(false); const [showBacklinks, setShowBacklinks] = useState(false);
const [showVersions, setShowVersions] = useState(false); const [showVersions, setShowVersions] = useState(false);
const selectedNoteRef = useRef<Note | null>(null); const selectedNoteRef = useRef<Note | null>(null);
@@ -99,7 +99,7 @@ function NotesPage() {
onSuccess: (note) => { onSuccess: (note) => {
queryClient.invalidateQueries({ queryKey: ["notes"] }); queryClient.invalidateQueries({ queryKey: ["notes"] });
selectedNoteRef.current = note; selectedNoteRef.current = note;
selectedNoteIdRef.current = note.id; setSelectedNoteId(note.id);
}, },
}); });
@@ -113,7 +113,7 @@ function NotesPage() {
onSuccess: () => { onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ["notes"] }); queryClient.invalidateQueries({ queryKey: ["notes"] });
selectedNoteRef.current = null; selectedNoteRef.current = null;
selectedNoteIdRef.current = null; setSelectedNoteId(null);
}, },
}); });
@@ -124,7 +124,7 @@ function NotesPage() {
} catch { } catch {
selectedNoteRef.current = note; selectedNoteRef.current = note;
} }
selectedNoteIdRef.current = note.id; setSelectedNoteId(note.id);
setShowBacklinks(false); setShowBacklinks(false);
setShowVersions(false); setShowVersions(false);
}; };
@@ -159,7 +159,7 @@ function NotesPage() {
onClick={() => selectNote(note)} onClick={() => selectNote(note)}
className={cn( className={cn(
"w-full text-left px-3 py-2 rounded-md text-sm transition-colors", "w-full text-left px-3 py-2 rounded-md text-sm transition-colors",
selectedNoteIdRef.current === note.id ? "bg-accent text-accent-foreground" : "hover:bg-accent/50" selectedNoteId === note.id ? "bg-accent text-accent-foreground" : "hover:bg-accent/50"
)} )}
> >
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">