اذهب إلى المحتوى

السؤال

نشر

لدي مشكلة في إضافة عنصر Script داخل كود react ولكن عند إضافة العنصر لا يعمل وكأني لم أقم بإضافته من الأساس ولا توجد أي أخطاء ظاهرة لدي. لقد قمت بتجربة الكود التالي:

render() {
    return (
        <script src="https://example.com/JsFile.js"></script>
    );
}

 

Recommended Posts

  • 1
نشر

لا يمكن إستخدام عناصر script في أي حالة من الحالات الآتية:

  • إستخدام رابط ملف جافاسكريبت خارجي 
  • إستخدام الكائن dangerouslySetInnerHTML

والسبب في ذلك هو أن الكائن React DOM (المسئول عن عرض مكونات React في الصفحة) يستخدم التابع createElement لتحويل كود JSX إلى عناصر HTML عادية، بعد ذلك يتم إستخدام التابع innerHTML لعرض هذه العناصر في الصفحة، وهذا التابع الآخير لا يقوم بتنفيذ عناصر Script لأسباب أمنية، وهذا هو السبب في أن عناصر script لن تعمل في مكونات react.

لكن الأمر أصبح أسهل في النسخ الحديثة من react وأصبح من الممكن إستخدام useEffect لتحميل وتنفيذ أكواد جافاسكريبت الخارجية، وهنا مثال:

import { useEffect } from 'react';

const useScript = url => {
  useEffect(() => {
    const script = document.createElement('script');

    script.src = url;
    script.async = true;

    document.body.appendChild(script);

    return () => {
      document.body.removeChild(script);
    }
  }, [url]);
};

export default useScript;

ويمكن إستخدام الـ Hook السابق بالطريقة التالية:

import useScript from 'hooks/useScript';

const MyComponent = props => {
  useScript('https://example.com/JsFile.js');

  // باقي أكواد المكون هنا
}

بالطريقة السابقة يمكن تحميل وإستدعاء أكواد جافاسكريبت (مثل ملفات jQuery أو Stripe أو  Google Analytics إلخ).

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...