Framework/React

[React] Modal ํŒ์—…์‹œ ๋’ท๋ฐฐ๊ฒฝ์ด ์Šคํฌ๋กค ๋˜์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•

yuri lee 2022. 8. 30. 23:35
๋ฐ˜์‘ํ˜•

Intro 

๋ฆฌ์•กํŠธ์—์„œ Modal ํŒ์—…์‹œ ๋’ท๋ฐฐ๊ฒฝ์ด ์Šคํฌ๋กค ๋˜์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. 

 

How to do 

import React, { useEffect } from 'react';
export const Modal = (props) => {
  // ๋ชจ๋‹ฌ ์˜ค๋ฒ„๋ ˆ์ด์—์„œ ์Šคํฌ๋กค ๋ฐฉ์ง€
  useEffect(() => {
    document.body.style.cssText = `
      position: fixed; 
      top: -${window.scrollY}px;
      overflow-y: scroll;
      width: 100%;`;
    return () => {
      const scrollY = document.body.style.top;
      document.body.style.cssText = '';
      window.scrollTo(0, parseInt(scrollY || '0', 10) * -1);
    };
  }, []);
  ...
};

useEffect๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Modal ํŒ์—…๋œ ์ƒํƒœ๋ผ๋ฉด ๋‹ค์Œ์˜ CSS๋ฅผ ์ ์šฉ์‹œํ‚ค๊ณ , ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด CSS๋ฅผ reset ์‹œํ‚ค๋ฉด ๋ฉ๋‹ˆ๋‹ค. 

 

Reference

http://yoonbumtae.com/?p=3776

๋ฐ˜์‘ํ˜•