일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- hbase 저장공간 설정
- ㅉ때
- jar 배포
- pinpoint
- UnsupportedOperationException
- 티스토리챌린지
- pinpoint 2.5.3
- LPOS
- Loki 로그
- 노드간 통신
- 애자일 싫타
- RedirectService
- fake jwt
- reids
- 개발 어렵당.ㅠ
- nGinder
- 핀포인트
- R2DBC Paging
- 월급루팡 일지
- Ingress Controller Fake
- jsonMarshaller
- intellij
- 오블완
- 7879
- Armeria
- 논블록킹 성능
- formik
- save/update
- 플루터
- OIDC
- Today
- Total
대머리개발자
state 관리 - 뽀개기 본문
생각보다 어렵다. 많이..이것저것 그냥 하다보면서 얻어 걸려서 진행하고 있지만 사실
deep한 이해가 있어야 한다... 모든 딥해야지..딥딥!
f(values.email && values.code){
/// 서브 밋 !!
loginAction(values).then(resultData => {
const token = resultData as Oauth2Token
if(token.access_token){
tokenSet(token.access_token, token.refresh_token)
dispatch(fetchUserInfo( {'type':'token', 'targetID': token.access_token}))
navigate( "/",{ replace: true })
}else{
setProps( {...props, dialogOpen: true, content: 'ME10006'})
}
});
}
메일과 메일에 발송된 코드를 통해 로그인을 한다.
토큰정보를 리턴해주고 정상적이라면 토큰을 쿠키 저장한다.
그리고 토큰을 통해 사용자 정보를 조회하고 리덕스 dispatch한다.
그리고 메인Page로 navigate 한다.
But!!! dispatch한 사용자 메일 정보가.. 아직도.. dispatch가 안되서.. 다시 로그인 페이지로...띠용!!! 무량 대수 만큼 콘솔로그 찍으면서 한 듯하다... 얻어 걸러야 하는데?.. 근본적인 이해를 좀 더 해볼까?..
if(!cookie.get('access_token') || user.loginInfo.email == ''){
navigate( "/login",{replace: true })
}
진짜. 어려운 한수다..
랜더링되는 이유를 다시 한번 생각해보자.
1.state 변경 될 때..
2.리덕스 상태 변경 될 때...
변경되는 즉시 랜더링되지 않는다!!! 또한 비동기 형태이다. 따라서 dispatch를 했다해도. 메인페이지 auth를 체크할 때 해당 값이 바인딩 되지 않았다는 것이다..!!!
그럼..? HOW??!!! email 값이 바인딩(변경) 될 때 다시 한번 렌더링 하면 되겠다!!..!! 이 한수가 어려웠다...
useEffect( ()=> {
authCheck()
}, [user.loginInfo.email])
앞선 게시글에도 언급한 내용이다.
빈 배열로 넣으면 딱 한번!! 실행. 항목을 넣으면 해당 항목이 변경 될 때마다 랜더링
객체로 넣으면 어떻게 될까용!!.
그리고 앞서서 한번 언급했지만 다시 한번 이야기하자면 state는 한방에 관리하자..
setMenu( ...)
setID( ...) ==> setProps ({ ...})
setList( ...)
아 ...근데 URL Path를 치고 들어오면.......리덕스 내용이 없는디??ㅋㅋ??ㅋㅋ?? ㅋㅋ
'개발이야기 > 프론트' 카테고리의 다른 글
VUE......프론트 엔드 개발자s (0) | 2023.10.26 |
---|---|
리덕스 상태 관리 (0) | 2023.04.03 |
[Context] 이해 없이 사용하는 기술은 도태된다. (0) | 2023.03.29 |
등록 / 수정 페이지 분리? (0) | 2023.03.24 |
보통의 개발자가 사용하는 axios (0) | 2023.03.20 |