Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[refactor] 페이지 이동 시 Access Token 확인 후 렌더링하는 로직으로 변경 #17

Merged
merged 1 commit into from
Jun 26, 2023

Conversation

kkkkkSE
Copy link
Owner

@kkkkkSE kkkkkSE commented Jun 26, 2023

No description provided.

@kkkkkSE kkkkkSE self-assigned this Jun 26, 2023
@kkkkkSE kkkkkSE merged commit df88e64 into dev Jun 26, 2023
@kkkkkSE kkkkkSE deleted the refactor/check-access-token branch June 26, 2023 09:00
Copy link

@Seung-wan Seung-wan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment on lines +10 to +15
const ready = useCheckAccessToken();

if (!ready) {
return null;
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p2: 동료 개발자가 useCheckAccessToken이라는 훅을 사용할 때 기존에 이 훅을 만드신 분은 변수 네이밍을 뭘로 했지? 하면서 컨벤션을 맞추려는 비용이 들 것 같은데요. hook에서 객체를 리턴해줘서 아래와 같이 사용하면 훨씬 편리할 것 같은데 어떠신가요? 추가적으로 useCheckAccessToken에 변화가 생겨 return해야 하는 값이 추가되어도 수정할 필요가 없을 것 같아요.

Suggested change
const ready = useCheckAccessToken();
if (!ready) {
return null;
}
const { ready } = useCheckAccessToken();
if (!ready) {
return null;
}

Comment on lines +7 to +8
export default function useCheckAccessToken(): boolean {
const [ready, setReady] = useState(false);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p3: 이 훅이 하는 역할은 accessToken이 있으면 return true, 없으면 / 경로로 redirect 시켜주는 것 같은데요. 내부적으로 navigate가 감춰져 있다는 게 기대와 다르게 사용이 될 수 있을 것 같다는 생각이 들어요. 개발자 입장에서 AccessToken이 존재하는지 체크하려고 했는데 만약 존재하지 않으면 redirect가 되어버릴 수 있는거죠.
함수가 2가지의 일을 하는 것과 side-effect가 있다는 것으로 생각해볼 것 같은데 redirect 로직은 추출해서 사용하는 쪽에서 ready가 false면 redirect 해주는 게 어떨까 싶어요.


import useAccessToken from './useAccessToken';

export default function useCheckAccessToken(): boolean {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p3: 훅이 하는 일은 accessToken을 가지고 유효한지, 아닌지를 가르고 있는 것 같은데요. 우리가 집중해야 하는 것은 accessToken을 확인해서 인증된 유저인지 보는 것 보다는 현재 유저가 인증된 유저인지만 확인하고 싶은 것 같아요. 외부에서는 어떤 방식으로 인증된 유저인지 확인하는 것에는 관심이 없으니까요. 따라서 네이밍이 조금 더 범용적으로, 무엇을 하고 싶은지에 맞춰서 작성이 되도 좋을 것 같아요.

Suggested change
export default function useCheckAccessToken(): boolean {
export default function useAuth(): boolean {

if (accessToken) {
setReady(true);
}
}, [accessToken, setAccessToken]);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p3: setAccessToken이 deps에 필요할까요?
eslint-plugin-react-hooks도 사용해보시면 좋을 것 같아요.

}
}, [accessToken, navigate]);

return ready;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p2: 인터페이스가 아래처럼 되면 좋을 것 같은데 어떠신가요?

Suggested change
return ready;
return { ready };

Comment on lines +20 to +24
useEffect(() => {
if (!accessToken) {
navigate('/');
}
}, [accessToken, navigate]);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p3: 해당 로직은 이 훅에서 분리되어도 괜찮을 것 같아요.

export default function useCheckAccessToken(): boolean {
const [ready, setReady] = useState(false);

const { accessToken, setAccessToken } = useAccessToken();

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p2: setAccessToken은 사용되고 있지 않은 것 같아요.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants