برنامه نویسی

تسلط “UseImperativeHandle” در React: یک راهنمای گام به گام برای متخصصان

تسلط بر خام `useimperativeHandle` endraw در React: یک راهنمای گام به گام برای متخصصان

تسلط useImperativeHandle در React: یک راهنمای گام به گام برای متخصصان

در توسعه React مدرن ، ما اغلب به دنبال راه هایی برای مدیریت منطق مؤلفه با ظرافت و بدون افشای داخلی غیر ضروری هستیم. یک ابزار قدرتمند در آرسنال پیشرفته React این است useImperativeHandle قلاب این قلاب به مؤلفه های عملکردی اجازه می دهد تا روشهای ضروری را در مورد اجزای والدین در معرض دید خود قرار دهند.

در این مقاله ، قلاب را با قدم به قدم با یک تقسیم خواهیم کرد مثال در دنیای واقعی با الهام از منطق UI تعاملی: یک مؤلفه ورودی سفارشی که ارائه می دهد .focus() روش به والدین خود. شما می دانید نه تنها این قلاب چه کاری انجام می دهد ، بلکه چرابا کیوت چگونه برای استفاده از آن مانند یک استاد React.


چیست useImperativeHandle؟

useImperativeHandle یک قلاب React است که به شما امکان می دهد مقدار نمونه ای را که هنگام استفاده در معرض آن قرار می گیرد ، سفارشی کنید ref روی یک مؤلفه از آن در رابطه با استفاده می شود forwardRefبشر

const MyComponent = forwardRef((props, ref) => {
  useImperativeHandle(ref, () => ({
    customMethod: () => {
      console.log('Custom method called!');
    }
  }));
  return <div>Hellodiv>;
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این به والدین اجازه می دهد تا تماس بگیرند customMethod() به طور مستقیم با استفاده از refبشر


چرا از آن استفاده می کنیم؟

به طور پیش فرض ، ref گره DOM زیرین را برمی گرداند. اما اگر می خواهید عملکرد خاص را افشا کنید ، چه می کنید؟ useImperativeHandle کنترل دقیق را در مورد آنچه در معرض دید قرار می دهد ، به شما می دهد ، و اجرای مؤلفه خود را محصور می کنید.

موارد استفاده

  • روش های تمرکز ، تاری یا پیمایش را روی اجزای ورودی سفارشی
  • انیمیشن ها یا انتقال کنترل شده توسط والدین
  • تنظیم مجدد یا ارسال روش ها در اجزای فرم

مثال در دنیای واقعی: ورودی سفارشی با روش فوکوس

بیایید یک قابل استفاده مجدد بسازیم TextInput مؤلفه ای که به والدین اجازه می دهد تماس بگیرد .focus() برنامه ای

1. مؤلفه را ایجاد کنید

import React, { useRef, useImperativeHandle, forwardRef } from 'react';

interface TextInputHandle {
  focus: () => void;
}

const TextInput = forwardRef<TextInputHandle>((props, ref) => {
  const inputRef = useRef<HTMLInputElement>(null);

  useImperativeHandle(ref, () => ({
    focus() {
      inputRef.current?.focus();
    }
  }));

  return <input ref={inputRef} type="text" className="custom-input" />;
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

2. از آن در والدین استفاده کنید

export const App = () => {
  const inputRef = useRef<TextInputHandle>(null);

  return (
    <div>
      <h3>Imperative Handle Demoh3>
      <TextInput ref={inputRef} />
      <button onClick={() => inputRef.current?.focus()}>
        Focus Input
      button>
    div>
  );
};
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

وقتی روی دکمه کلیک می کنید ، TextInput متمرکز می شود


مفاهیم کلیدی

قلاب / ویژگی هدف
forwardRef اجازه می دهد تا Ref به اجزای عملکردی منتقل شود
useImperativeHandle روش ها یا خواص سفارشی را از یک مؤلفه کودک در معرض دید قرار می دهد
ref اشاره به یک مؤلفه یا گره DOM را ارائه می دهد
محاصره از نشت اجرای داخلی غیر ضروری جلوگیری می کند

جایزه جایزه

سعی کنید TextInput شامل:

  • .clear() روش خالی کردن ورودی
  • .getValue() روش بازگشت مقدار ورودی فعلی

مثال:

useImperativeHandle(ref, () => ({
  focus: () => inputRef.current?.focus(),
  clear: () => inputRef.current && (inputRef.current.value = ''),
  getValue: () => inputRef.current?.value
}));
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


پایان

در useImperativeHandle هوک یک تکنیک پیشرفته اما قدرتمند در React است. این کنترل ریز دانه بر تعامل مؤلفه به شما امکان می دهد و به شما امکان می دهد API های تمیز و قابل استفاده مجدد را بین اجزای بدون به خطر انداختن محاصره در معرض دید قرار دهید.

درک و تسلط useImperativeHandle یک گام کلیدی برای تبدیل شدن به یک متخصص واقعی React است.


#REACT #typescript #hooks #ref #frontend #architecture

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا