Conversation
|
기존의 코드는 제안 예시const ArrowLeft = ({ onBack }: { onBack?: () => void }) => {
const navigate = useNavigate();
const handleBack = () => {
if (onBack) {
onBack();
} else {
navigate(-1);
}
};
return (
<Button onClick={handleBack}>
<img src={CaretLeftIcon} alt="arrow-left" />
</Button>
);
};
<AppBar leftContent={<ArrowLeft />} />
<AppBar leftContent={<ArrowLeft onBack={() => navigate('/')} />} />
<AppBar leftContent={
<ArrowLeft onBack={() => {
if (window.confirm("정말 나가시겠습니까?")) {
navigate(-1);
}
}} />
} />추가물론 변경하신 아래처럼 Screen.Recording.2025-01-31.at.10.38.59.PM.movuseEffect(() => {
console.log('초기 히스토리 길이:', history.length);
}, []);
// 1. history 조작
const handleState = () => {
console.log('조작 전 히스토리 길이:', history.length);
history.pushState({}, '', location.pathname);
console.log('조작 후 히스토리 길이:', history.length);
};
// 2. history 이동 테스트
const handleHistory = () => {
console.log('2. history 이동 실행');
history.length <= 2 ? navigate('/', { replace: true }) : navigate(locate as string);
};
// 3. navigate(-1)
const handleBack = () => {
console.log('3. navigate(-1) 실행');
navigate(-1);
};결론
|
이렇게 동작하는 걸 의도하고 만들었습니다 예시로 보여주신 이 방식은 강제로 빈 값을 스택에 채워 넣는 건데 사용자 입장에서 이렇게 사용할 경우는 없다고 생각합니다. |
저도 사용자가 직접 스택을 추가하는 일은 없다는 부분은 동의해요. 다만, 이외에도 웹뷰(WebView), 데스크탑 웹, 모바일 웹 그리고 각 벤더사의 브라우저 별로 length 값이 모든 환경에서 동일하게 동작한다고 보장할 수는 없어요. 브라우저 별 관리 방식 차이로 예상과 다르게 동작할 수 있어요. 즉, 또, locate 방식은 특정 경로로 이동하는 역할을 하지만, 이동 전에 추가적인 처리를 할 수 없어요. 하지만, onBack 방식은 함수를 받을 수 있기 때문에 이동 전에 그리고 백버튼의 기본 동작이 추가로 하민님이 말씀한 안정성인 '페이지 이탈을 막는 것'도 중요한 부분이라고 생각해요. 이전 페이지가 없을 때 다른 사이트로 가는 것보다 저희 서비스의 홈으로 보내는건 정말 좋은 방식이라고 생각해요. 다만 이걸 좀 더 다양한 환경에서도 일관성있게 적용할 방법이 있을지 얘기해보면 좋을 것 같아요. 아래는 참고삼아 네이버 뉴스, 마켓컬리, 당근 채용 사이트의 뒤로가기를 확인한 영상이에요. 첫 번째랑 두 번째는 페이지를 이탈하는 경우이고 세 번째는 이탈하지 않고 특정 페이지로 보내주더라고요. 하민님이 고민하고 작성하신 코드가 세 번째 케이스가 맞나요? Screen.Recording.2025-02-01.at.8.08.53.PM.mov |
#️⃣연관된 이슈
#75
#84
📝작업 내용
이번 PR에서 작업한 내용을 간략히 설명해주세요(이미지 첨부 가능)
스크린샷 (선택)
기존 : 무조건 이전 페이지로 이동하는 방식
변경 : 디폴트 ( 이전 페이지) / 사용자 지정 시 해당 페이지로 이동 / 이전 페이지 없을 시 뒤로가기 방지 추가
사용방법
검색페이지 앱바 디자인 변경
width : 100%로 변경
검색 페이지만 별도로 앱바를 만드는 건 관리도 힘들어지고 코드도 복잡해질 거 같아 처음 정했던 방식으로 바꿨습니다

navbar와 같은 width로 맞춰져 있어 보기에도 괜찮은 거 같아요!