Perf: Make <AggregateKeyframeTrack> render its children with memoized props

This commit is contained in:
Aria Minaei 2022-07-12 13:09:00 +02:00 committed by Aria
parent 86dd2cbf86
commit 707a27462d

View file

@ -93,9 +93,9 @@ function AggregatedKeyframeTrack_memo(props: IAggregatedKeyframeTracksProps) {
() => logger._debug('see aggregatedKeyframes', props.aggregatedKeyframes),
)
const posKfs: IAggregateKeyframesAtPosition[] = [
...aggregatedKeyframes.byPosition.entries(),
]
const posKfs: IAggregateKeyframesAtPosition[] = useMemo(
() =>
[...aggregatedKeyframes.byPosition.entries()]
.sort((a, b) => a[0] - b[0])
.map(
([position, keyframes]): IAggregateKeyframesAtPosition => ({
@ -104,6 +104,8 @@ function AggregatedKeyframeTrack_memo(props: IAggregatedKeyframeTracksProps) {
selected: selectedPositions.get(position),
allHere: keyframes.length === aggregatedKeyframes.tracks.length,
}),
),
[aggregatedKeyframes, selectedPositions],
)
const snapPositionsState = useVal(snapPositionsStateD)
@ -129,7 +131,9 @@ function AggregatedKeyframeTrack_memo(props: IAggregatedKeyframeTracksProps) {
/>
))
const keyframeEditorProps = posKfs.map(
const keyframeEditorProps = useMemo(
() =>
posKfs.map(
(
{position, keyframes},
index,
@ -143,6 +147,8 @@ function AggregatedKeyframeTrack_memo(props: IAggregatedKeyframeTracksProps) {
selection: selectedPositions.has(position) ? selection : undefined,
},
}),
),
[posKfs, viewModel, selectedPositions],
)
const [isDragging] = useDragForAggregateKeyframeDot(