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

خطأ Hooks can only be called inside the body of a function component في React.js؟

Emad Saif

السؤال

حاولت عمل مشروع React جديد وبدأت في كتابة مكون لعداد counter بسيط ولكن عندما بدأ إستعمال useState :

import React, { useState } from "react";
const [count, setCount] = useState(0);

export const MyComponent = (props) => {
	return <span>{count}</span>
}

ظهر لي الخطأ التالي:

Hooks can only be called inside the body of a function component

ما سبب هذه المشكلة؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

ال hooks وظيفتها تكون ضمن ال component، فمثلا ال hook التي قمت باستعمالها تقوم بالإضافة إلى ال state، و بالتالي لا معنى من وجودها خارج ال component.

و هذا تماما ما يقوله لك الخطأ.

يمكنك تصحيح الكود عن طريق إدخال ال hook إلى داخل التابع بالشكل التالي:

import React, { useState } from "react";


export const MyComponent = (props) => {
  	const [count, setCount] = useState(0);
	return <span>{count}</span>
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

لكل لغة او منصة برمجية قواعد وشروط يجب قراءتها قبل الشروع بتنفيذ التكويد بواسطها. أن React أضافت في نسختها version 16.8  ال Hooks الى مجموعة أدواتها وهي طريقة أكثر سهولة لكتابة الcomponents تنصح به React  كبديل لل class component ليس بإعادة كتابة الأعمال المنجزة بالطريقة السابقة ولكن للأعمال الجديدة التي تنوي إنجازها.

لايمكنك إستدعاء دوال Hooks مثل useState  و useEffect وغيرها خارج ال component كما تفعل في مثالك المدرج, كما لا يمكنك إستدعاء هذه الدوال داخل حلقات التكرار loops أو الدوال المتداخلة  nested functions او داخل جمل شرطية conditions.

تأكد دائماً أن تضع هذه الدوال في المستوى ألأعلى top-level من الcomponent. يمكنك قراءة المزيد عن React Hooks  في الموقع الرسمي لمنصة React.

تم التعديل في بواسطة علي محسن
رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...