@@ -3,7 +3,7 @@ import { ShareIcon, SymbolThreeIcon, SymbolTwoIcon } from '@/assets/icons';
33import { nativeBridge } from '@/utils/bridge' ;
44import * as S from './MemeDetailPage.styles' ;
55import { useTheme } from '@emotion/react' ;
6- import { useRef } from 'react' ;
6+ import { useRef , useState , useEffect } from 'react' ;
77import { useScroll , useTransform , useSpring } from 'motion/react' ;
88
99const DUMMY_DATA = {
@@ -28,31 +28,20 @@ const MemeDetailPage = () => {
2828 const containerRef = useRef < HTMLDivElement > ( null ) ;
2929 const { scrollY } = useScroll ( { container : containerRef } ) ;
3030
31- const height = useTransform ( scrollY , [ 0 , 200 ] , [ 400 , 250 ] ) ;
31+ const height = useTransform ( scrollY , [ 0 , 60 ] , [ 400 , 175 ] ) ;
3232 const smoothHeight = useSpring ( height , {
33- stiffness : 100 ,
34- damping : 20 ,
33+ stiffness : 300 ,
34+ damping : 50 ,
3535 } ) ;
3636
37- // 공유하기 버튼 애니메이션
38- const buttonWidth = useTransform ( scrollY , [ 0 , 50 ] , [ 116 , 44 ] ) ;
39- const textOpacity = useTransform ( scrollY , [ 0 , 30 ] , [ 1 , 0 ] ) ;
40- const textWidth = useTransform ( scrollY , [ 0 , 30 ] , [ 68 , 0 ] ) ;
37+ const [ isTextVisible , setIsTextVisible ] = useState ( true ) ;
4138
42- const smoothButtonWidth = useSpring ( buttonWidth , {
43- stiffness : 400 ,
44- damping : 40 ,
45- } ) ;
46-
47- const smoothTextWidth = useSpring ( textWidth , {
48- stiffness : 400 ,
49- damping : 40 ,
50- } ) ;
51-
52- const smoothTextOpacity = useSpring ( textOpacity , {
53- stiffness : 400 ,
54- damping : 40 ,
55- } ) ;
39+ useEffect ( ( ) => {
40+ const unsubscribe = scrollY . on ( 'change' , ( latest ) => {
41+ setIsTextVisible ( latest < 1 ) ;
42+ } ) ;
43+ return ( ) => unsubscribe ( ) ;
44+ } , [ scrollY ] ) ;
5645
5746 return (
5847 < Layout
@@ -67,9 +56,6 @@ const MemeDetailPage = () => {
6756 alt = { DUMMY_DATA . success . title }
6857 />
6958 < S . ShareButton
70- style = { {
71- width : smoothButtonWidth ,
72- } }
7359 onClick = { ( ) => {
7460 nativeBridge . shareMeme ( {
7561 title : DUMMY_DATA . success . title ,
@@ -78,15 +64,7 @@ const MemeDetailPage = () => {
7864 } }
7965 >
8066 < ShareIcon width = { 24 } height = { 24 } />
81- < S . ShareButtonText
82- style = { {
83- opacity : smoothTextOpacity ,
84- width : smoothTextWidth ,
85- overflow : 'hidden' ,
86- } }
87- >
88- 공유하기
89- </ S . ShareButtonText >
67+ { isTextVisible && < S . ShareButtonText > 공유하기</ S . ShareButtonText > }
9068 </ S . ShareButton >
9169 </ S . ImageContainer >
9270 < S . ContentContainer >
@@ -113,4 +91,4 @@ const MemeDetailPage = () => {
11391 ) ;
11492} ;
11593
116- export default MemeDetailPage ;
94+ export default MemeDetailPage ;
0 commit comments