জয়েন লগইন

রিয়েক্ট

🌈রিয়েক্ট কি?

📋রিয়েক্ট হলো হুক ব্যবহার করার পদ্ধতি।

⚒️রিয়েক্ট হুক ব্যবহার করতে ব্যবহৃত হয়।

রিয়েক্ট সমূহ

রিয়েক্ট এবং সেগুলোর ব্যবহারের তালিকা

  • ➡️ useState - কম্পোনেন্টের স্টেট পরিচালনা করা
  • ➡️ useReducer - রিডিউসার ফাংশনের মাধ্যমে স্টেট পরিচালনা করা
  • ➡️ useContext - কনটেক্সটের মাধ্যমে ডেটা অ্যাক্সেস করা
  • ➡️ useRef - রিফারেন্স সংরক্ষণ করা
  • ➡️ useEffect - সাইড ইফেক্ট পরিচালনা করা
  • ➡️ useLayoutEffect - ব্রাউজারে রেন্ডার হওয়ার আগে লেআউট-সম্পর্কিত সাইড ইফেক্ট পরিচালনা করা
  • ➡️ useInsertionEffect - লেআউট ইফেক্ট চালানোর আগে CSS ইনজেক্ট করা
  • ➡️ useEffectEvent - ইফেক্টের ভেতর থেকে সর্বশেষ প্রপস ও স্টেট পড়ার জন্য ইফেক্ট ইভেন্ট তৈরি করা
  • ➡️ useMemo - গণনার ফলাফল মেমোয়াইজ করা
  • ➡️ useCallback - ফাংশন মেমোয়াইজ করা
  • ➡️ useTransition - স্টেট আপডেটকে ট্রানজিশন হিসেবে পরিচালনা করা
  • ➡️ useDeferredValue - একটি মানের আপডেট বিলম্বিত করা
  • ➡️ useDebugValue - কাস্টম হুকের ডিবাগ মান প্রদর্শন করা
  • ➡️ useId - ইউনিক আইডি তৈরি করা
  • ➡️ useSyncExternalStore - এক্সটার্নাল স্টোরের সঙ্গে সাবস্ক্রিপশন ও স্টেট সিঙ্ক্রোনাইজ করা
  • ➡️ useActionState - অ্যাকশনের ফলাফলের ভিত্তিতে স্টেট পরিচালনা করা
  • ➡️ useFormStatus - ফর্মের সাবমিশন স্ট্যাটাস সংগ্রহ করা

useState - কম্পোনেন্টের স্টেট পরিচালনা করার উদাহরণ।

react
import {createRoot} from "react-dom/client";
import React, {useState} from "react";

function App() {
  const [name, setName] = useState("");

  return (
    <div>
      <input
        value={name}
        onChange={(e) => setName(e.target.value)}
        placeholder="আপনার নাম"
      />
      <p>স্বাগতম {name}</p>
    </div>
  );
}

createRoot(
  document.getElementById("root")
).render(<App/>);

useReducer - রিডিউসার ফাংশনের মাধ্যমে স্টেট পরিচালনা করার উদাহরণ।

react
import {createRoot} from "react-dom/client";
import React, {useReducer} from "react";

function reducer(count, action) {
  if (action.type === "increment") {
    return count + 1;
  }
  if (action.type === "decrement") {
    return count - 1;
  }
  return count;
}

function App() {
  const [count, dispatch] = useReducer(reducer, 0);

  return (
    <div>
      <button onClick={() => dispatch({type: "decrement"})}>-</button>
      <span>{count}</span>
      <button onClick={() => dispatch({type: "increment"})}>+</button>
    </div>
  );
}

createRoot(
  document.getElementById("root")
).render(<App/>);

useContext - কনটেক্সটের মাধ্যমে ডেটা অ্যাক্সেস করার উদাহরণ।

react
import {createRoot} from "react-dom/client";
import React, {createContext, useContext} from "react";

const text = createContext();

function Profile() {
  const user = useContext(text);
  return <h1>স্বাগতম {user}</h1>;
}

function App() {
  return (
    <text.Provider value="রিয়েক্ট">
      <Profile/>
    </text.Provider>
  );
}

createRoot(
  document.getElementById("root")
).render(<App/>);

useRef - রিফারেন্স সংরক্ষণ করার উদাহরণ।

react
import {createRoot} from "react-dom/client";
import React, {useRef} from "react";

function App() {
  const input = useRef(null);

  function execute() {
    input.current.focus();
  }

  return (
    <div>
      <input ref={input} />
      <button onClick={execute}>সাবমিট</button>
    </div>
  );
}

createRoot(
  document.getElementById("root")
).render(<App/>);

useEffect - সাইড ইফেক্ট পরিচালনা করার উদাহরণ।

react
import {createRoot} from "react-dom/client";
import React, {useEffect, useState} from "react";

function App() {
  const [count, setCount] = useState(0);

  useEffect(() => {
    document.title = "Count: " + count;
  }, [count]);

  return (
    <button onClick={() => setCount(count + 1)}>
      কাউন্ট: {count}
    </button>
  );
}

createRoot(
  document.getElementById("root")
).render(<App/>);

useLayoutEffect - ব্রাউজারে রেন্ডার হওয়ার আগে লেআউট-সম্পর্কিত সাইড ইফেক্ট পরিচালনা করার উদাহরণ।

react
import {createRoot} from "react-dom/client";
import React, {useLayoutEffect, useRef, useState} from "react";

function App() {
  const box = useRef(null);
  const [width, setWidth] = useState(0);

  useLayoutEffect(() => {
    setWidth(box.current.offsetWidth);
  }, []);

  return (
    <div>
      <div ref={box}>উইথ</div>
      <p>{width}px</p>
    </div>
  );
}

createRoot(
  document.getElementById("root")
).render(<App/>);

useInsertionEffect - লেআউট ইফেক্ট চালানোর আগে CSS ইনজেক্ট করার উদাহরণ।

react
import {createRoot} from "react-dom/client";
import React, {useInsertionEffect} from "react";

function App() {
  useInsertionEffect(() => {
    const style = document.createElement("style");
    style.textContent = ".title {color: red}";
    document.head.appendChild(style);

    return () => style.remove();
  }, []);

  return <h1 className="title">প্রোগ্রামিং শিখুন</h1>;
}

createRoot(
  document.getElementById("root")
).render(<App/>);

useEffectEvent - ইফেক্টের ভেতর থেকে সর্বশেষ প্রপস ও স্টেট পড়ার জন্য ইফেক্ট ইভেন্ট তৈরি করার উদাহরণ।

react
import {createRoot} from "react-dom/client";
import React, {useEffect, useEffectEvent, useState} from "react";

function App() {
  const [count, setCount] = useState(0);

  const show = useEffectEvent(() => {
    console.log("Current count:", count);
  });

  useEffect(() => {
    const timer = setInterval(() => {
      show();
    }, 1000);

    return () => clearInterval(timer);
  }, []);

  return (
    <button onClick={() => setCount(count + 1)}>
      কাউন্ট: {count}
    </button>
  );
}

createRoot(
  document.getElementById("root")
).render(<App/>);

useMemo - গণনার ফলাফল মেমোয়াইজ করার উদাহরণ।

react
import {createRoot} from "react-dom/client";
import React, {useMemo, useState} from "react";

function App() {
  const [number, setNumber] = useState(1);
  const [name, setName] = useState("");

  const result = useMemo(() => {
    return number * number;
  }, [number]);

  return (
    <div>
      <input
        value={name}
        onChange={(e) => setName(e.target.value)}
      />
      <button onClick={() => setNumber(number + 1)}>
        বৃদ্ধি
      </button>
      <p>স্কয়ার: {result}</p>
    </div>
  );
}

createRoot(
  document.getElementById("root")
).render(<App/>);

useCallback - ফাংশন মেমোয়াইজ করার উদাহরণ।

react
import {createRoot} from "react-dom/client";
import React, {useCallback, useState} from "react";

function App() {
  const [count, setCount] = useState(0);

  const increase = useCallback(() => {
    setCount(value => value + 1);
  }, []);

  return (
    <div>
      <button onClick={increase}>বৃদ্ধি</button>
      <p>কাউন্ট: {count}</p>
    </div>
  );
}

createRoot(
  document.getElementById("root")
).render(<App/>);

useTransition - স্টেট আপডেটকে ট্রানজিশন হিসেবে পরিচালনা করার উদাহরণ।

react
import {createRoot} from "react-dom/client";
import React, {useState, useTransition} from "react";

function App() {
  const [text, setText] = useState("");
  const [list, setList] = useState([]);
  const [isPending, startTransition] = useTransition();

  function changeText(e) {
    setText(e.target.value);
    startTransition(() => {
      setList(Array.from({length: 1000}, (_, i) =>
        e.target.value + " " + i
      ));
    });
  }

  return (
    <div>
      <input value={text} onChange={changeText} placeholder="সার্চ"/>
      <p>{isPending ? "লোডিং" : ""}</p>
      {list.slice(0, 5).map((item, i) => (
        <div key={i}>{item}</div>
      ))}
    </div>
  );
}

createRoot(
  document.getElementById("root")
).render(<App/>);

useDeferredValue - একটি মানের আপডেট বিলম্বিত করার উদাহরণ।

react
import {createRoot} from "react-dom/client";
import React, {useDeferredValue, useState} from "react";

function App() {
  const [text, setText] = useState("");
  const deferredText = useDeferredValue(text);

  return (
    <div>
      <input
        value={text}
        onChange={(e) => setText(e.target.value)}
        placeholder="সার্চ"
      />
      <p>{deferredText}</p>
    </div>
  );
}

createRoot(
  document.getElementById("root")
).render(<App/>);

useDebugValue - কাস্টম হুকের ডিবাগ মান প্রদর্শন করার উদাহরণ।

react
import {createRoot} from "react-dom/client";
import React, {useDebugValue, useState} from "react";

function useOnlineStatus() {
  const [online] = useState(true);

  useDebugValue(online ? "অনলাইন" : "অফলাইন");

  return online;
}

function App() {
  const online = useOnlineStatus();

  return <p>{online ? "অনলাইন" : "অফলাইন"}</p>;
}

createRoot(
  document.getElementById("root")
).render(<App/>);

useId - ইউনিক আইডি তৈরি করার উদাহরণ।

react
import {createRoot} from "react-dom/client";
import React, {useId} from "react";

function App() {
  const id = useId();

  return (
    <div>
      <label htmlFor={id}>আপনার নাম</label>
      <input id={id}/>
    </div>
  );
}

createRoot(
  document.getElementById("root")
).render(<App/>);

useSyncExternalStore - এক্সটার্নাল স্টোরের সঙ্গে সাবস্ক্রিপশন ও স্টেট সিঙ্ক্রোনাইজ করার উদাহরণ।

react
import {createRoot} from "react-dom/client";
import React, {useSyncExternalStore} from "react";

const store = {
  value: 0,
  listeners: new Set(),
  subscribe(listener) {
    this.listeners.add(listener);
    return () => this.listeners.delete(listener);
  },
  getSnapshot() {
    return this.value;
  },
  increment() {
    this.value++;
    this.listeners.forEach(listener => listener());
  }
};

function App() {
  const value = useSyncExternalStore(
    store.subscribe.bind(store),
    store.getSnapshot.bind(store)
  );

  return (
    <div>
      <button onClick={() => store.increment()}>বৃদ্ধি</button>
      <p>ভ্যালু: {value}</p>
    </div>
  );
}

createRoot(
  document.getElementById("root")
).render(<App/>);

useActionState - অ্যাকশনের ফলাফলের ভিত্তিতে স্টেট পরিচালনা করার উদাহরণ।

react
import {createRoot} from "react-dom/client";
import React from "react";
import {useActionState} from "react";

async function updateName(previousState, formData) {
  const name = formData.get("name");
  return " " + name;
}

function App() {
  const [message, formAction, isPending] = useActionState(
    updateName,
    ""
  );

  return (
    <form action={formAction}>
      <input name="name" placeholder="আপনার নাম"/>
      <button disabled={isPending}>সেভ করুন</button>
      <p>{message}</p>
    </form>
  );
}

createRoot(
  document.getElementById("root")
).render(<App/>);

useFormStatus - ফর্মের সাবমিশন স্ট্যাটাস সংগ্রহ করার উদাহরণ।

react
import {createRoot} from "react-dom/client";
import React from "react";
import {useFormStatus} from "react-dom";

function SubmitButton() {
  const {pending} = useFormStatus();

  return (
    <button disabled={pending}>
      {pending ? "" : "সেভ করুন"}
    </button>
  );
}

function App() {
  async function submitForm(formData) {
    await new Promise(resolve => setTimeout(resolve, 1000));
    console.log(formData.get("name"));
  }

  return (
    <form action={submitForm}>
      <input name="name" placeholder="আপনার নাম"/>
      <SubmitButton/>
    </form>
  );
}

createRoot(
  document.getElementById("root")
).render(<App/>);

রিয়েক্ট সম্পর্কিত বিস্তারিত তথ্য

কার্যকর কোডিং উদাহরণ এবং সেগুলোর রেফারেন্স লিংক

নাম বিবরণ
useState কম্পোনেন্টের স্টেট পরিচালনা করতে ব্যবহৃত হয়।
useReducer রিডিউসার ফাংশনের মাধ্যমে স্টেট পরিচালনা করতে ব্যবহৃত হয়।
useContext কনটেক্সটের মাধ্যমে ডেটা অ্যাক্সেস করতে ব্যবহৃত হয়।
useRef রিফারেন্স সংরক্ষণ করতে ব্যবহৃত হয়।
useEffect সাইড ইফেক্ট পরিচালনা করতে ব্যবহৃত হয়।
useLayoutEffect ব্রাউজারে রেন্ডার হওয়ার আগে লেআউট-সম্পর্কিত সাইড ইফেক্ট পরিচালনা করতে ব্যবহৃত হয়।
useInsertionEffect লেআউট ইফেক্ট চালানোর আগে CSS ইনজেক্ট করতে ব্যবহৃত হয়।
useEffectEvent ইফেক্টের ভেতর থেকে সর্বশেষ প্রপস ও স্টেট পড়ার জন্য ইফেক্ট ইভেন্ট তৈরি করতে ব্যবহৃত হয়।
useMemo গণনার ফলাফল মেমোয়াইজ করতে ব্যবহৃত হয়।
useCallback ফাংশন মেমোয়াইজ করতে ব্যবহৃত হয়।
useTransition স্টেট আপডেটকে ট্রানজিশন হিসেবে পরিচালনা করতে ব্যবহৃত হয়।
useDeferredValue একটি মানের আপডেট বিলম্বিত করতে ব্যবহৃত হয়।
useDebugValue কাস্টম হুকের ডিবাগ মান প্রদর্শন করতে ব্যবহৃত হয়।
useId ইউনিক আইডি তৈরি করতে ব্যবহৃত হয়।
useSyncExternalStore এক্সটার্নাল স্টোরের সঙ্গে সাবস্ক্রিপশন ও স্টেট সিঙ্ক্রোনাইজ করতে ব্যবহৃত হয়।
useActionState অ্যাকশনের ফলাফলের ভিত্তিতে স্টেট পরিচালনা করতে ব্যবহৃত হয়।
useFormStatus ফর্মের সাবমিশন স্ট্যাটাস সংগ্রহ করতে ব্যবহৃত হয়।