هل يمكنني استخدام خطافات React داخل شرطي؟

لا.

لا اعرفلماذا امن الناحية الفنية ، لكن هذا غير ممكن.

لقد عثرت على هذا أثناء العمل مع SWR وعلى وجه الخصوصuseSWRصنارة صيد.

const ({ data } = useSWR(`/api/user`, fetcher)

أردت فقط استرداد بعض البيانات من واجهة برمجة التطبيقات عندما يتم تسجيل دخول المستخدم ، وفكرت "حسنًا ، يمكنني القيام بذلك":

let data

if (loggedIn) { ;({ data } = useSWR(/api/user, fetcher) }

لكن لا.

ستثير React أخطاء في وحدة التحكم ، ربما خطأ يقرأ:

تحذير: اكتشفت React تغييرًا في ترتيب الخطافات التي استدعتها الدورة التدريبية. سيؤدي ذلك إلى أخطاء وأخطاء إذا لم يتم إصلاحها.

سيكون الحل مختلفًا اعتمادًا على الخطاف المستخدم. في هذه الحالة ، تم تقديم حل سريع وفعال للغاية بواسطةuseSWRخطاف ، لأنني يمكن أن تمرnullبدلاً من نقطة نهاية API لتجنب تحميل البيانات:

const ({ data } = useSWR(loggedIn ? `/api/user` : null, fetcher)

لقد قمت بنقل الشرطداخلالمكالمة الخطافية ، وهذا جعلها تعمل بالنسبة لي.

تحميل مجانيكتيب رد الفعل


المزيد من البرامج التعليمية للتفاعل: