Posts

Showing posts with the label javascript

Optimizing Konva Performance with rAF

Image
Introduction requestAnimationFrame (rAF) is a powerful browser API that helps achieve smoother interface changes by synchronizing rendering with the screen's refresh rate. Using rAF helps optimize performance, minimize lag (jank), and save energy by pausing calculations when the browser tab is inactive. Prerequisites In this article, I will continue to use the example from the previous article to optimize, so I will not provide the complete code but only the updated part; please refer to the previous article for the full content. Detail Update the OptimizedCanvas.tsx file as follows: import Konva from 'konva' import React , {useCallback, useEffect, useMemo, useRef, useState} from 'react' import {Layer, Stage} from 'react-konva' import useImage from 'use-image' import {ShapeItem} from './ShapeItem' import type {ShapeData, ViewRect} from './type' import {generateData, HEIGHT, IMAGE_URL, TOTAL_OBJECTS, WIDTH} from ...

User Guide for Zustand

Image
Introduction Zustand is an extremely lightweight, fast, and easy-to-use state management library for React applications. Highlighted advantages of Zustand include: No need for a Provider to wrap the application Extremely concise syntax that reduces boilerplate code Excellent support for TypeScript High performance thanks to a mechanism that only re-renders necessary components. Detail First, install it into your project as follows: yarn add zustand Let's start with a simple Counter app example for you to easily understand how to use it. Create file useCounterStore.ts import {create} from 'zustand' interface CounterState { count : number increment : () => void decrement : () => void reset : () => void } const useCounterStore = create < CounterState >( set => ({ count: 0 , increment : () => set ( state => ({ count: state.count + 1 })) , decrement : () => set ( state => ({ count: state.count - 1 })) , res...