Error Boundaries এর মাধ্যমে UI Protection

ReactJS এর জন্য Error Boundaries - রিয়্যাক্ট জেএস (ReactJS) - Web Development

309

ReactJS-এ Error Boundaries একটি গুরুত্বপূর্ণ ফিচার যা কম্পোনেন্টের মধ্যে কোনো JavaScript এর ত্রুটি (error) হলে পুরো অ্যাপ্লিকেশন ক্র্যাশ না হয়ে UI নিরাপদ রাখে। Error Boundaries মূলত একটি React কম্পোনেন্ট যা তার অধীনে থাকা কম্পোনেন্টগুলোতে কোনো ত্রুটি ধরতে পারে এবং সেই ত্রুটির জন্য একটি ফালব্যাক UI রেন্ডার করে। এটি অ্যাপ্লিকেশনকে ক্র্যাশ হওয়ার থেকে রক্ষা করে এবং ব্যবহারকারীদের জন্য একটি গ্রেসফুল (graceful) অভিজ্ঞতা তৈরি করে।

এই টিউটোরিয়ালে আমরা দেখব কিভাবে React-এর Error Boundaries ব্যবহার করা যায় এবং কিভাবে UI-কে নিরাপদ রাখা যায়।


১. Error Boundaries কী?

Error Boundaries হল React কম্পোনেন্ট, যা কোনো ত্রুটি (error) ঘটলে সেই ত্রুটিকে ক্যাচ (catch) করে এবং পুরো অ্যাপ্লিকেশনকে ক্র্যাশ না করে একটি ব্যাকআপ UI রেন্ডার করে। যখন কোনো সাব-কম্পোনেন্টে এরর হয়, তখন error boundary সেই error হ্যান্ডল করে এবং একটি ফালব্যাক UI প্রদর্শন করে।

Error Boundaries শুধুমাত্র Class Components-এ কাজ করে, অর্থাৎ, এই ফিচারটি ফাংশনাল কম্পোনেন্টে সরাসরি ব্যবহার করা যায় না (যতক্ষণ না React hooks এর মাধ্যমে এটি সমর্থিত হয়, যা ভবিষ্যতে আসতে পারে)।


২. Error Boundary তৈরি করা

একটি Error Boundary তৈরি করতে আপনাকে একটি class-based component তৈরি করতে হবে, যা componentDidCatch lifecycle method ব্যবহার করে error কে ধরবে। এই মেথডটি দুইটি প্যারামিটার নেয়:

  • error: যে ত্রুটিটি ঘটেছে।
  • info: ত্রুটির স্ট্যাক ট্রেস বা অতিরিক্ত তথ্য।

এখানে একটি সহজ উদাহরণ:

Error Boundary কম্পোনেন্ট:

import React, { Component } from 'react';

class ErrorBoundary extends Component {
  constructor(props) {
    super(props);
    this.state = { hasError: false, errorInfo: null };
  }

  // Lifecycle method to catch errors
  componentDidCatch(error, errorInfo) {
    this.setState({
      hasError: true,
      errorInfo: errorInfo
    });
    console.log(error, errorInfo); // Optionally log error
  }

  render() {
    if (this.state.hasError) {
      // Custom fallback UI
      return (
        <div>
          <h2>Something went wrong!</h2>
          <details style={{ whiteSpace: 'pre-wrap' }}>
            {this.state.errorInfo && this.state.errorInfo.componentStack}
          </details>
        </div>
      );
    }

    // If no error, render children components normally
    return this.props.children; 
  }
}

export default ErrorBoundary;

ব্যাখ্যা:

  • componentDidCatch মেথডটি ত্রুটি ধরতে ব্যবহৃত হয় এবং সেই ত্রুটির তথ্য state-এ সেভ করা হয়।
  • যখন hasError state সত্যি হয়, তখন একটি ফালব্যাক UI রেন্ডার করা হয় (যেমন "Something went wrong!" মেসেজ)।
  • যদি কোনো ত্রুটি না ঘটে, তাহলে this.props.children (অথবা কম্পোনেন্টের অন্যান্য UI) স্বাভাবিকভাবে রেন্ডার হবে।

৩. Error Boundary ব্যবহার করা

একটি Error Boundary তৈরি করার পর, এটি আপনার অ্যাপ্লিকেশনের সেই অংশে ব্যবহার করা যায় যেখানে আপনি ত্রুটির ঝুঁকি অনুভব করেন। আপনি Error Boundary-কে একটি অথবা একাধিক কম্পোনেন্টের চারপাশে র‍্যাপ করতে পারেন।

Error Boundary ব্যবহার করা:

import React from 'react';
import ErrorBoundary from './ErrorBoundary';
import MyComponent from './MyComponent';

function App() {
  return (
    <div>
      <h1>My React App</h1>

      {/* ErrorBoundary ব্যবহার করা */}
      <ErrorBoundary>
        <MyComponent />
      </ErrorBoundary>

    </div>
  );
}

export default App;

এখানে, MyComponent যদি কোনো ত্রুটি ফেলে, তবে ErrorBoundary সেই ত্রুটিকে ধরবে এবং একটি ফালব্যাক UI রেন্ডার করবে।


৪. Error Boundaries এর সীমাবদ্ধতা

React Error Boundaries কিছু সীমাবদ্ধতার সম্মুখীন হয়:

  1. Asynchronous Errors: componentDidCatch শুধুমাত্র সিঙ্ক্রোনাস ত্রুটিগুলো ধরতে পারে, অর্থাৎ, Promise বা অন্যান্য অ্যাসিঙ্ক্রোনাস ত্রুটি ধরতে পারে না।
  2. Event Handlers: React ইভেন্ট হ্যান্ডলার (যেমন onClick, onChange ইত্যাদি) থেকে ত্রুটি হলে তা Error Boundary দ্বারা ধরতে পারবে না। এগুলির জন্য try-catch ব্লক ব্যবহার করতে হবে।

Asynchronous Errors হ্যান্ডল করা:

এখানে, আপনি অ্যাসিঙ্ক্রোনাস ফাংশনের জন্য try-catch ব্লক ব্যবহার করতে পারেন:

async function fetchData() {
  try {
    const response = await fetch('https://api.example.com/data');
    const data = await response.json();
  } catch (error) {
    console.error('Error fetching data:', error);
  }
}

৫. Error Boundary এর জন্য কিছু ভালো প্র্যাকটিস

  • Specific Error Boundaries: আপনার অ্যাপ্লিকেশনে বিশেষ ধরনের ত্রুটি ধরার জন্য আলাদা আলাদা Error Boundary ব্যবহার করুন। উদাহরণস্বরূপ, আপনি অ্যাপ্লিকেশন এবং ডাটাবেসের জন্য আলাদা আলাদা Error Boundaries ব্যবহার করতে পারেন।
  • UI রিফাইনমেন্ট: Error Boundaries থেকে যে ফালব্যাক UI রেন্ডার হয় তা ব্যবহারকারীর জন্য আরও ভালো অভিজ্ঞতা তৈরি করতে স্টাইল করুন। উদাহরণস্বরূপ, একটি সুন্দর "Something went wrong!" পেজ বা লোডিং স্পিনার।

সারাংশ

ReactJS-এ Error Boundaries ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনের UI-কে নিরাপদ রাখতে পারেন এবং ব্যবহারকারীদের অভিজ্ঞতা ভালো রাখতে পারেন। এটি ত্রুটি হ্যান্ডলিংয়ের জন্য একটি শক্তিশালী উপায়, যা React অ্যাপ্লিকেশনের স্থিতিশীলতা বজায় রাখতে সাহায্য করে। Error Boundaries-কে সাধারণত অ্যাপ্লিকেশনের গুরুত্বপূর্ণ অংশগুলোর চারপাশে ব্যবহার করা হয় যাতে কোনো ত্রুটি ঘটলে পুরো অ্যাপ্লিকেশন বন্ধ না হয়ে একটি ফালব্যাক UI প্রদর্শিত হয়।

Content added By
Promotion

Are you sure to start over?

Loading...