기술 스택 : React, TS, MUI, styled-components
import { useState, useRef } from "react";
import { IconButton } from "@mui/material";
import { Fullscreen, FullscreenExit } from "@mui/icons-material";
import styled from "styled-components";
const Container = styled.div`
position: relative;
width: 100%;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background-color: #1a1a1a;
color: white;
`;
const FullscreenButton = styled(IconButton)`
position: absolute;
top: 16px;
right: 16px;
color: white;
`;
export default function FullscreenToggle() {
const [isFullscreen, setIsFullscreen] = useState(false);
const containerRef = useRef<HTMLDivElement>(null);
const toggleFullscreen = () => {
if (!document.fullscreenElement) {
containerRef.current?.requestFullscreen().then(() => {
setIsFullscreen(true);
});
} else {
document.exitFullscreen().then(() => {
setIsFullscreen(false);
});
}
};
return (
<Container ref={containerRef}>
<FullscreenButton onClick={toggleFullscreen}>
{isFullscreen ? <FullscreenExit /> : <Fullscreen />}
</FullscreenButton>
<p>전체화면을 전환하려면 버튼을 클릭하세요.</p>
</Container>
);
}
'프론트엔드 > React' 카테고리의 다른 글
[React] 리액트에서 key의 역할( + 배열 데이터 변경으로 인한 렌더링 버그 트러블 슈팅) (0) | 2025.02.08 |
---|---|
[React] 리액트의 useState와 Zustand의 store에 저장된 데이터는 브라우저의 어느 위치에 저장되는 것일까? (1) | 2024.12.18 |
[React] 배열 렌더링 key 속성 오류 원인 (0) | 2024.11.24 |
[React] useEffect와 useMemo의 차이점 (0) | 2024.09.17 |
[React] 커스텀훅(Hooks)은 왜 쓸까? (0) | 2024.07.28 |