1- import { useEffect , useState , useCallback } from 'react' ;
1+ import React , { useEffect , useState , useCallback } from 'react' ;
22import { Text , Avatar , Button , Image , Modal } from 'components' ;
33import { useUserContext } from 'contexts/UserContext' ;
44import theme from 'styles/theme' ;
@@ -18,12 +18,20 @@ import {
1818
1919const UserData = ( { user, pageUserId, userLevel } ) => {
2020 const { currentUser, onFollow, onUnfollow } = useUserContext ( ) ;
21- const checkFollow = currentUser . following . some ( ( follow ) => follow . user === pageUserId ) ;
22- const [ isFollow , setIsFollow ] = useState ( checkFollow ) ;
21+ const followData = currentUser . following . filter ( ( follow ) => follow . user === pageUserId ) ;
22+ const [ isFollow , setIsFollow ] = useState ( false ) ;
2323 const [ isFollowModal , setIsFollowModal ] = useState ( false ) ;
2424 const [ isUnFollowModal , setIsUnFollowModal ] = useState ( false ) ;
2525 const [ followers , setFollowers ] = useState ( ) ;
2626
27+ useEffect ( ( ) => {
28+ setIsFollow ( followData . length === 0 ? false : true ) ;
29+ } , [ followData ] ) ;
30+
31+ useEffect ( ( ) => {
32+ setFollowers ( user . followers . length ) ;
33+ } , [ user ] ) ;
34+
2735 const navigate = useNavigate ( ) ;
2836
2937 const onCloseFollow = ( ) => {
@@ -34,7 +42,7 @@ const UserData = ({ user, pageUserId, userLevel }) => {
3442 setIsUnFollowModal ( false ) ;
3543 } ;
3644
37- const hadleFollow = useCallback ( ( ) => {
45+ const handleFollow = useCallback ( ( ) => {
3846 if ( ! isFollow ) {
3947 onFollow ( { userId : pageUserId , followId : '' } ) ;
4048 setIsFollowModal ( true ) ;
@@ -44,9 +52,7 @@ const UserData = ({ user, pageUserId, userLevel }) => {
4452 setIsFollow ( true ) ;
4553 } , [ pageUserId , isFollow , onFollow , followers ] ) ;
4654
47- const hadleUnFollow = useCallback ( ( ) => {
48- const followData = currentUser . following . filter ( ( follow ) => follow . user === pageUserId ) ;
49-
55+ const handleUnFollow = useCallback ( ( ) => {
5056 if ( followData . length !== 0 ) {
5157 onUnfollow ( { unfollowId : followData [ 0 ] . _id } ) ;
5258 setIsFollow ( false ) ;
@@ -55,11 +61,7 @@ const UserData = ({ user, pageUserId, userLevel }) => {
5561 }
5662 }
5763 setIsUnFollowModal ( false ) ;
58- } , [ pageUserId , currentUser , onUnfollow , followers ] ) ;
59-
60- useEffect ( ( ) => {
61- setFollowers ( user . followers . length ) ;
62- } , [ user ] ) ;
64+ } , [ followData , onUnfollow , followers ] ) ;
6365
6466 return (
6567 < UserInfo >
@@ -127,7 +129,7 @@ const UserData = ({ user, pageUserId, userLevel }) => {
127129 borderRadius = { 10 }
128130 fontSize = "16px"
129131 style = { { ...followButtonStyle } }
130- onClick = { hadleFollow }
132+ onClick = { handleFollow }
131133 >
132134 팔로우
133135 </ Button >
@@ -150,7 +152,7 @@ const UserData = ({ user, pageUserId, userLevel }) => {
150152 />
151153 < Modal . Button
152154 onClick = { ( ) => {
153- hadleUnFollow ( ) ;
155+ handleUnFollow ( ) ;
154156 } }
155157 >
156158 확인
@@ -167,7 +169,7 @@ const UserData = ({ user, pageUserId, userLevel }) => {
167169 ) ;
168170} ;
169171
170- export default UserData ;
172+ export default React . memo ( UserData ) ;
171173
172174UserData . propTypes = {
173175 user : PropTypes . object ,
0 commit comments