react 반복문 & 모달
업데이트:
카테고리: react
/map을 이용하여 반복문 돌리기 (v-for)
// 반복문 돌릴 객체에 map을 사용하여 표시할 태그를 작성한다.
{movies.map((movie) => {
// 이미지가 안나옴
<img
key = {movie.id}
// 포스터가 만약 상단 행에 존재하는 것이라면 다르게 스타일링을 적용하기 위해
className={`row__poster ${isLargeLow && "row_posterLarger"}`}
src={`https://image.tmdb.org/t/p/original${isLargeLow ? movie.poster_path : movie.backdrop_path}`}
alt={movie.name} />
})}
슬라이드 기능
scrollLeft
, scrollright
를 이용하여 기능 구현
해당 기능을 사용 함수를 실행할 때 일정 범위마다 이동하도록 할 수 있다.
<span className='arrow'
onClick={() => {
document.getElementById(id).scrollRight += window.innerWidth - 80;
}}
>{">"}</span>
특정 상황에서의 스타일링
- 호버시
&:hover {}
를 이용하여 안에 호버시 적용할 스타일을 적는다. - 화면 크기에 따라 반응형으로 제작할떄
@media (max-width: 768px) {}
: 768px 미만이면 안에 태그를 적용한다.
모달
-
클릭 하였을 때 모달창을 띄운다
// 모달창을 클릭하였을 때 MovieModal이 나오도록 // movie의 상세정보를 props로 넘겨준다. {modalOpen && <MovieModal {...movieSeleted} setModalOpen={setModalOpen}/>}
-
모달창 내부에 영화 상세요청을 한다 ⭐참고
useEffect(() ⇒ {}, []);
작성시 빈배열을 넣는 이유 useEffect는 값이 바뀔 때 마다 다시 실행된다.
두번재 인자로 빈배열을 작성하게 되면 useEffect의 함수가 한번만 실행된다.
infinite loop
- 처음 데이터 실행은 useEffect안에 작성
-
setState의 값은 직접변경하는 게 아니라 변수를 사용하여 변경
function App() { const [count, setCount] = useState(0); useEffect(() => { setCount(previousCount => previousCount + 1) }, []) return ... }
-
이벤트 핸들러는 아래와 같이 작성
export default function App() { const [count, setCount] = useState(0); return ( <button onClick={() => setCount(1)}>Submit</button> // infinite loop ); }
태그안에 특정기호 작성하기
태그 안에서 < 표시를 보여주고 싶을때
{"<"}
형식으로 작성해야 페이지 내에서 <
가 잘 보인다.