슬라이드 기능
<span className="arrow" onClick={() => { document.getElementById(id).scrollLeft -= window.innerWidth - 80; }} > {"<"} </span>
React Router Dom
npm install react-router-dom --save
import { BrowserRouter } from 'react-router-dom'; const root = ReactDOM.createRoot(document.getElementById('root')); root.render( // App을 BrowserRouter로 감싸야함 <BrowserRouter> <App /> </BrowserRouter> );
import { Route, Routes } from 'react-router-dom'; function App() { return ( // Routes로 Route를 감싸야함 <div className='App'> <Routes> <Route> <Route index element={<MainPage />} /> <Route path=':movieId' element={<DetailPage />} /> <Route path='search' element={<SearchPage />} /> </Route> </Routes> </div> ); }
Single Page Application (SPA)
useLocation & useNavigate
const useQuery = () => { return new URLSearchParams(useLocation().search); }; // useLocation() 사용 // useNavigate는 onClick={() => navigate('주소')} 의 방식으로 사
useDebounce
import { useState, useEffect } from 'react'; export const useDebounce = (value, delay) => { const [debounceValue, setDebounceValue] = useState(value); useEffect(() => { const handler = setTimeout(() => { setDebounceValue(value); }, delay); return () => { clearTimeout(handler); }; }, [value, delay]); return debounceValue; };
const [searchResults, setSearchResults] = useState([]); const useQuery = () => { return new URLSearchParams(useLocation().search); }; let query = useQuery(); const searchTerm = query.get('q'); // useDebounce 사용방법 const debouncedSearchTerm = useDebounce(searchTerm, 500);
useParams
const { movieId } = useParams();
모달 창 외부클릭시 모달 닫게 설정하기
import React, { useEffect } from 'react'; const useOnClickOutside = (ref, handler) => { useEffect(() => { const listener = (event) => { console.log('ref', ref.current); if (!ref.current || ref.current.contains(event.target)) { return; } handler(); }; document.addEventListener('mousedown', listener); document.addEventListener('touchstart', listener); return () => { document.addEventListener('mousedown', listener); document.addEventListener('touchstart', listener); }; }, []); }; export default useOnClickOutside;
const ref = useRef(); useOnClickOutside(ref, () => { setModalOpen(false); });
swiper 모듈을 이용해서 터치슬라이드 구현
npm install swiper --save