๐ŸŽฎ ํ”„๋กœ๊ทธ๋ž˜๋ฐ/๐Ÿ‘ฉ‍๐Ÿ’ป ๊ฐœ๋ฐœ ๊ณต๋ถ€

[React/Typescript] ํ™”๋ฉด ์ „ํ™˜ ํšจ๊ณผ / ํŽ˜์ด๋“œ์ธ ์• ๋‹ˆ๋ฉ”์ด์…˜ / Fade ์ปดํฌ๋„ŒํŠธ

xxilliant 2023. 4. 29. 16:42
728x90
๋ฐ˜์‘ํ˜•

 

 

์ข…์„ค ๊ฐœ๋ฐœ ์ค‘์— ํ™”๋ฉด ์ „ํ™˜ ํšจ๊ณผ๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„ ๋„ฃ์–ด๋ณธ fade ํšจ๊ณผ ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.

duration ๋ณ€์ˆ˜๋กœ fade in ์‹œ๊ฐ„ ์กฐ์ ˆ ๊ฐ€๋Šฅํ•˜๊ณ ,

์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ƒํƒœ ์†์„ฑ์€ ์•„๋ž˜ ์ฐธ๊ณ .

 

entering: ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ™”๋ฉด์— ์ง„์ž…ํ•˜๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ˆ˜ํ–‰ ์ค‘์ธ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
entered: ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ™”๋ฉด์— ์™„์ „ํžˆ ์ง„์ž…ํ•œ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
exiting: ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ™”๋ฉด์—์„œ ์‚ฌ๋ผ์ง€๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ˆ˜ํ–‰ ์ค‘์ธ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
exited: ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ™”๋ฉด์—์„œ ์™„์ „ํžˆ ์‚ฌ๋ผ์ง„ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

 

ํ˜น์‹œ ๋‚˜์ค‘์— ์จ๋จน์„ ์ผ ์ƒ๊ธธ๊นŒ๋ด & ํ•„์š”ํ•˜์‹  ๋ถ„ ์žˆ์„๊นŒ๋ด ๊ณต์œ !

 

์•„ ์ฐธ๊ณ ๋กœ react์—์„œ transition ์“ฐ๋ ค๋ฉด ์„ค์น˜ ๋จผ์ € ํ•ด์ค˜์•ผํ•œ๋‹ค.

 

Javascript : 

npm install react-transition-group

 

Typescript : 

npm i --save-dev @types/react-transition-group

 

Fade in/Fade out/๋ถ€๋“œ๋Ÿฌ์šด ํ™”๋ฉด์ „ํ™˜ ์ฝ”๋“œ

import React, { ReactNode } from "react";
import { Transition } from "react-transition-group";

interface IProps {
  children: React.ReactNode;
}

const duration = 200;

const defaultStyle = {
  transition: `opacity ${duration}ms ease-in-out`,
  opacity: 0,
};

const transitionStyles: { [key: string]: any } = {
  entering: { opacity: 1 },
  entered: { opacity: 1 },
  exiting: { opacity: 0 },
  exited: { opacity: 0 },
};

const Fade = ({ children }: IProps) => {
  const [inProp, setInProp] = React.useState(false);

  React.useEffect(() => {
    setInProp(true);
    return () => setInProp(false);
  }, []);

  return (
    <Transition in={inProp} timeout={duration}>
      {(state) => (
        <div
          style={{
            ...defaultStyle,
            ...transitionStyles[state],
          }}
        >
          {children}
        </div>
      )}
    </Transition>
  );
};

export default Fade;

 

์‚ฌ์šฉํ•  ๋•Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด return ๋‚ด๋ถ€์— fade ํšจ๊ณผ๋ฅผ ์ฃผ๊ณ ์‹ถ์€ ์š”์†Œ๋“ค์„ ๊ฐ์‹ธ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

728x90
๋ฐ˜์‘ํ˜•