fix: replace sync useEffect with render-phase guard to prevent flicker

This commit is contained in:
2026-07-25 20:31:17 +07:00
parent a9f56d0fcd
commit 966e673fae
2 changed files with 6 additions and 2 deletions
+5 -1
View File
@@ -4595,7 +4595,11 @@ const PianoRollTabEditor = ({ st, zoom, bpm, viewportWidth, onClose, onUpdateNot
const viewBeats = Math.ceil(viewWidth / pixelsPerBeat) + 4;
const [notes, setNotes] = React.useState(st.notes || []);
React.useEffect(() => { setNotes(st.notes || []); }, [st.notes]);
const prevNotesRef = React.useRef(st.notes);
if (st.notes !== prevNotesRef.current) {
prevNotesRef.current = st.notes;
if (!draggedNote) setNotes(st.notes || []);
}
const brushVelocityRef = React.useRef(0.8);
const [selectedNoteIds, setSelectedNoteIds] = React.useState([]);