diff --git a/src/components/sections/Experience.tsx b/src/components/sections/Experience.tsx index ea14425..2f19a21 100644 --- a/src/components/sections/Experience.tsx +++ b/src/components/sections/Experience.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useState, useRef, useEffect } from 'react'; +import { useState, useRef, useEffect, useCallback } from 'react'; import { useTranslations } from 'next-intl'; import { motion, AnimatePresence } from 'framer-motion'; @@ -32,15 +32,15 @@ const Experience = () => { const totalPages = Math.ceil((Array.isArray(experiences) ? experiences.length : 0) / itemsPerPage); - const handleTouchStart = (e: React.TouchEvent) => { + const handleTouchStart = useCallback((e: React.TouchEvent) => { setTouchStart(e.touches[0].clientX); - }; + }, []); - const handleTouchMove = (e: React.TouchEvent) => { + const handleTouchMove = useCallback((e: React.TouchEvent) => { setTouchEnd(e.touches[0].clientX); - }; + }, []); - const handleTouchEnd = () => { + const handleTouchEnd = useCallback(() => { if (!touchStart || !touchEnd) return; const distance = touchStart - touchEnd; @@ -56,13 +56,13 @@ const Experience = () => { setTouchStart(null); setTouchEnd(null); - }; + }, [touchStart, touchEnd, currentPage, totalPages]); - const getCurrentPageItems = () => { + const getCurrentPageItems = useCallback(() => { if (!Array.isArray(experiences)) return []; const startIndex = currentPage * itemsPerPage; return experiences.slice(startIndex, startIndex + itemsPerPage); - }; + }, [experiences, currentPage, itemsPerPage]); return (