takin17
4k
2022-06-09 09:46:59 작성 2022-06-09 09:47:44 수정됨
4
96

react의 useSelector 궁금합니다.


컴포넌트a()

{

const reducerLoginInfo = useSelector(state=> state.loginReducer);


함수a()


{


   dispatch(...); //loginReducer 디스패치합니다. 


   //loginReducer디스패치한 값을 다시 select 할수 있나요?


}



}



함수 a에서 디스패치한 후 바로 아래에서 코딩으로 state값을 다시 가져와 확인할수 있는 방법이 없을까요

0
  • 답변 4

  • 똥뜨리
    447
    2022-06-09 09:53:04

    useEffect(()=>{
    console.log(reducerLoginInfo)
    },[reducerLoginInfo ]) 하시면 되지 않을까요?

  • takin17
    4k
    2022-06-09 09:57:37

    똥트리//

        useEffect(()=>
        {
            console.log('useEffect:');
            console.log(reducerLoginInfo);  

        },[reducerLoginInfo]);
     

        const Login=async(e)=>
        {    
             //navigate('/Home/Board/BoardList');
             //return;
            e.preventDefault();
            //let params = {UserID:loginUserInfo.UserID,UserPWD:loginUserInfo.UserPWD};
           
            console.log('a');
            params.LoginUser(loginUserInfo);  

            console.log('b');

            if(reducerLoginInfo.data.USER_ID == null)
                alert('비밀번호가 일치하지 않습니다.')
            else
            {
                navigate('/Home/Board/BoardList');
            }
        }

    이렇게 코딩해봐도 if문에 reducerLoginInfo 값이 리플리쉬 되기 전이라 그런지 초기값이네요
  • 똥뜨리
    447
    2022-06-09 10:20:37

    초기값 거르시면 되지 않을까요? 
    reducerLoginInfo.data.USER_ID == null
    혹은 useUpdateEffect 훅 따로 만드셔서 작성하시면 될것 같아요. 

  • takin17
    4k
    2022-06-09 15:24:15

    똥뜨리// dispatch하자마자    state값을 바로 갱신하진 못하네요.. 리랜더링 되면서 결국 useUpdateEffect 훅이나 이런걸로 가야하는군요..

  • 로그인을 하시면 답변을 등록할 수 있습니다.