React চিট শিট
অনুসন্ধানযোগ্য, প্রিন্টযোগ্য React 19 রেফারেন্স — কম্পোনেন্ট, JSX, হুক, নতুন Actions API, কন্টেক্সট, refs এবং পারফরম্যান্স। বিনামূল্যে।
Components & JSX
12function App() { return <h1>Hi</h1>; }
export default function App() {}
<Greeting name="Ada" />
{1 + 2} or {user.name}
<>{a}{b}</>
<div className="card">
{isOpen && <Menu />}
{ok ? <Yes /> : <No />}
{items.map(i => <li key={i.id}>{i.t}</li>)}
function Btn({ label, onClick }) {}
function Card({ children }) { return children; }
<input value={v} onChange={onChange} />
Rendering & setup
10import { createRoot } from 'react-dom/client'
createRoot(document.getElementById('root')).render(<App/>)
import { StrictMode } from 'react'
<StrictMode><App /></StrictMode>
import { hydrateRoot } from 'react-dom/client'
hydrateRoot(el, <App />)
root.unmount()
import App from './App.jsx'
<App {...props} />
export { Button, Card }
State & effects
12const [count, setCount] = useState(0)
setCount(c => c + 1)
setUser(u => ({ ...u, name }))
useEffect(() => { run(); }, [dep])
useEffect(() => { /* once */ }, [])
useEffect(() => () => cleanup(), [])
const ref = useRef(null)
const [state, dispatch] = useReducer(r, init)
const theme = useContext(ThemeContext)
const memo = useMemo(() => calc(a), [a])
useLayoutEffect(() => {}, [])
useSyncExternalStore(sub, get)
React 19 hooks & APIs
12import { use } from 'react'
const data = use(promise)
const theme = use(ThemeContext)
const [state, action, pending] = useActionState(fn, init)
const [opt, addOpt] = useOptimistic(state, reducer)
const { pending } = useFormStatus()
const [isPending, startTransition] = useTransition()
startTransition(async () => await save())
const deferred = useDeferredValue(value)
const id = useId()
<title>Page title</title>
function Input({ ref }) {}
Forms & Actions
12<form action={handleSubmit}>
function handleSubmit(formData) {}
formData.get('email')
const [state, action] = useActionState(submit, null)
<form action={action}>
const [s, a, pending] = useActionState(fn, init)
return { error: 'Invalid' }
function Submit() { const { pending } = useFormStatus() }
<button disabled={pending}>Save</button>
import { requestFormReset } from 'react-dom'
requestFormReset(formEl)
<form action={action}><Submit /></form>
Props & composition
10function Hi({ name = 'Guest' }) {}
function Box({ children }) { return children; }
<Box><p>Inside</p></Box>
function List({ render }) { return render(); }
<List render={() => <Item />} />
<Input {...props} />
const { id, ...rest } = props
<Avatar {...rest} size="lg" />
function Btn(props: BtnProps) {}
<Slot label={<b>Hi</b>} />
Events
10<button onClick={handleClick}>
function handleClick(e) {}
<input onChange={e => set(e.target.value)} />
<form onSubmit={e => e.preventDefault()}>
e.stopPropagation()
<li onClick={() => remove(id)}>
<input onKeyDown={e => e.key === 'Enter'}
<div onMouseEnter={hover}>
e.currentTarget.value
<button onClick={() => {}} type="button">
Lists & keys
10arr.map(x => <li key={x.id}>{x.t}</li>)
key={item.id}
key={index}
users.map(u => <Card key={u.id} {...u} />)
{list.length === 0 && <Empty />}
import { Fragment } from 'react'
<Fragment key={id}>{a}{b}</Fragment>
{rows.filter(r => r.on).map(...)}
Keys must be unique among siblings
{[...Array(n)].map((_, i) => ...)}
Context
10const ThemeContext = createContext('light')
import { createContext } from 'react'
<ThemeContext value={theme}>
<ThemeContext value={theme}><App /></ThemeContext>
const theme = useContext(ThemeContext)
const theme = use(ThemeContext)
if (cond) { const t = use(Ctx); }
export const ThemeContext = createContext()
<Ctx value={{ user, setUser }}>
Avoid new objects each render
Refs
10const inputRef = useRef(null)
<input ref={inputRef} />
inputRef.current.focus()
function Field({ ref }) { return <input ref={ref} /> }
<Field ref={inputRef} />
useImperativeHandle(ref, () => ({ focus }))
const setRef = node => { box = node; }
<div ref={setRef} />
const count = useRef(0)
ref={node => { return () => cleanup(); }}
Performance
10const Memo = memo(Component)
import { memo } from 'react'
const value = useMemo(() => calc(a), [a])
const fn = useCallback(() => f(a), [a])
const Lazy = lazy(() => import('./Big.jsx'))
import { lazy, Suspense } from 'react'
<Suspense fallback={<Spin />}><Lazy /></Suspense>
startTransition(() => setQuery(q))
const slow = useDeferredValue(query)
React Compiler auto-memoizes
Misc & metadata
10<Suspense fallback={<Loading />}>
class ErrorBoundary extends Component {}
<title>My Page</title>
<meta name="description" content="..." />
<link rel="stylesheet" href="..." />
<Comp key={id} />
React.lazy(() => import('./Page.jsx'))
createPortal(node, container)
{/* a comment */}
cleanup return in useEffect
“:q”-এর সাথে কোনো এন্ট্রি মেলে না।
React চিট শিট সম্পর্কে
এই React চিট শিট React 19-কে লক্ষ্য করে তৈরি এবং লাইব্রেরিটিকে ধারণা অনুযায়ী ম্যাপ করে: কম্পোনেন্ট ও JSX, রেন্ডারিং ও সেটআপ, স্টেট ও ইফেক্ট, React 19-এর হুক ও API, ফর্ম ও Actions, প্রপস ও কম্পোজিশন, ইভেন্ট, লিস্ট ও কী, কনটেক্সট, রেফ, পারফরম্যান্স, এবং মেটাডেটাসহ অন্যান্য বিষয়।
এটি প্রতিটি কম্পোনেন্টে ব্যবহৃত মৌলিক বিষয়গুলো — useState, useEffect, প্রপস, কী, কন্ট্রোল্ড ইনপুট — এবং Actions-ভিত্তিক ফর্ম প্যাটার্নসহ নতুন React 19 সংযোজন উভয়ই কভার করে, ফলে এটি একটি রিফ্রেশার হিসেবে এবং বর্তমান API-তে যাওয়ার সেতু হিসেবে কাজ করে।
শিটটি বিনামূল্যে এবং ক্লায়েন্ট-সাইডে কাজ করে। সার্চ বক্স দিয়ে হুক ও প্যাটার্ন সরাসরি ফিল্টার করুন, স্টিকি সূচিপত্র থেকে সেকশনে যান, এক ক্লিকে যেকোনো স্নিপেট কপি করুন এবং কম্পোনেন্ট তৈরির সময় রেফারেন্স হিসেবে পাতাটি প্রিন্ট করুন।
React চিট শিট কীভাবে ব্যবহার করবেন
- সেকশনগুলো চোখ বুলিয়ে দেখুন, Components & JSX ও State & effects থেকে React 19 hooks & APIs এবং Performance পর্যন্ত।
- useEffect, key বা context-এর মতো কোনো হুক বা ধারণা খুঁজে শিটটি সরাসরি ফিল্টার করুন।
- নির্দিষ্ট কোনো প্যাটার্ন দরকার হলে স্টিকি সাইডবার দিয়ে Forms & Actions বা Refs-এ চলে যান।
- কোনো স্নিপেট বা এর কপি আইকনে ক্লিক করে কোডটি আপনার কম্পোনেন্টে কপি করুন।
- অফলাইন React রেফারেন্স হিসেবে শিটটি প্রিন্ট করুন।