๐ฎ ํ๋ก๊ทธ๋๋ฐ/๐ฉ๐ป ๊ฐ๋ฐ ๊ณต๋ถ
[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
๋ฐ์ํ