reactjs - جلوگیری از آنمانت در حالت Strict در React18
طبق این، React با حالت Strict به شکل زیر رفتار میکند...
- ریاکت کامپوننت را رندر میکند.
ریاکت کامپوننت را مونت میکند
- کد راهاندازی اثر چیدمان اجرا میشود.
- کد راهاندازی افکت اجرا میشود.
React شبیهسازی میکند که کامپوننت مخفی شده یا از حالت مونت خارج شده است.
- کد پاکسازی اثر چیدمان اجرا میشود
ریاکت شبیهسازی میکند که کامپوننت دوباره نمایش داده شود یا دوباره mount شود.
- کد راهاندازی افکت چیدمان اجرا میشود
با این حال، من چنین تابعی دارم...
const [ac, setAC] = useState(new AbortController())
useEffect(() => {
return () => ac.abort();
}, [ac]
این تابع پاکسازی هر بار که حالت سختگیرانه فعال است فراخوانی میشود، اما من میخواهم آن را طوری اجرا کنم که بدون حالت سختگیرانه رفتار میکند (اما میخواهم حالت سختگیرانه را نگه دارم).
راههای خوبی برای انجام آن وجود دارد؟
من چیزی شبیه به آن را امتحان کردم
// Use a Ref to hold the value, but initialize it in an effect.
const ref = useRef(null);
useEffect(() => {
// Initialize an imperative API inside of the same effect that destroys it.
// This way it will be recreated if the component gets remounted.
const someImperativeThing = ref.current = new SomeImperativeThing();
return () => {
someImperativeThing.destroy();
};
}, []);
const handeThing = (event) => {
const someImperativeThing = ref.current;
// Now we can call methods on the imperative API...
};
اما طبق انتظارم کار نمیکند...