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

السؤال

نشر

التطبيق يطلب منى clean up ل useEffect كيف افعلها ؟؟

هذا هو الكود 

 const [modalVisiable, setModalVisiable] = useState(false);
  const [selectedType, setSelectedType] = useState("نوع المخالفة");
  const [location, setLocation] = useState(initLocation);
  const [errorMsg, setErrorMsg] = useState(null);

  //
  const [startCamera, setStartCamera] = useState(false);
  const [capturedImage, setCapturedImage] = useState(null);
  const [waitMessage, setWaitMessage] = useState("");

  const __takePicture = async () => {
    if (!camera) return;
    setWaitMessage("انتظر قليلا حتى يتم تحويلك");
    const photo = await camera.takePictureAsync();
    console.log(photo);
    setCapturedImage(photo);
    console.log(capturedImage);
    setStartCamera(false);
    setWaitMessage("");
  };
  let camera = Camera;

  useEffect(() => {
    (async () => {
      let { status } = await Location.requestForegroundPermissionsAsync();
      if (status !== "granted") {
        setErrorMsg("يجب عليك ان توافق على التصريح");
        return;
      }
      let location = await Location.getCurrentPositionAsync({});
      setLocation(location);
    })();
  }, []);

 

Recommended Posts

  • 0
نشر

دالة التنظيف clean هي دالة تقوم بوضعها في إرجاع دالة useEffect لكي تقوم بإزالة بيانات سابقة أو أحداث سابقة كما في هذا المثال

useEffect(() => {
    API.subscribe()
    return function cleanup() {
        API.unsubscribe()
    }
},[])

وهذا مثال آخر يوضح ذلك

const Loading = () => {
  const [loadingStatus, setLoadingStatus] = useState(".");

  useEffect(() => {// إنشاء فترة وحفظ رقمها  
    const intervalId = setInterval(() => {
      setLoadingStatus(ls => ls + ".");
    }, 1000);

    return () => clearInterval(intervalId);// إزالة الفترة التي أنشئناها من خلال دالة التنظيف
  }, []);

  return <p>{`Loading ${loadingStatus}`}</p>;
};

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...