تسلط “UseImperativeHandle” در 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