Performance
Code Example
function App() {
const [timeframe, setTimeframe] = useState(DEFAULT_TIMEFRAME);
const debouncedTimeframe = useDeferredValue(timeframe);
...
return (
<TimelineContext
onDragEnd={onDragEnd}
onResizeEnd={onResizeEnd}
timeframe={debouncedTimeframe} // provide the debounced timeframe
onTimeframeChanged={setTimeframe}
>
<Timeline items={items} rows={rows} />
</TimelineContext>
)function Item(props: ItemProps) {
...
const style: CSSProperties = {
...itemStyle,
transition: 'left .2s linear, width .2s linear',
// You can a CSS transition to make the debounce feel smoother
}
return (
<div ref={setNodeRef} style={style} {...listeners} {...attributes}>
...
</div>
)
}Code Example
function App() {
const [timeframe, setTimeframe] = useState(DEFAULT_TIMEFRAME);
const debouncedTimeframe = useThrottle(timeframe, 300);
...
return (
<TimelineContext
onDragEnd={onDragEnd}
onResizeEnd={onResizeEnd}
timeframe={debouncedTimeframe} // provide the debounced timeframe
onTimeframeChanged={setTimeframe}
>
<Timeline items={items} rows={rows} />
</TimelineContext>
)function Item(props: ItemProps) {
...
const style: CSSProperties = {
...itemStyle,
transition: 'left .2s linear, width .2s linear',
// You can a CSS transition to make the debounce feel smoother
}
return (
<div ref={setNodeRef} style={style} {...listeners} {...attributes}>
...
</div>
)
}Live Example
Last updated