홈페이지를 뒤로 가기 하거나 뒤로 간 상태에서 앞으로 가기 등을 할 수 있는 이유는 히스토리
가 남아있기 때문임
goBack()
을 하면 뒤로가고 goForward()
를 하면 앞으로, push()
를 하면 정해진 url
로 갈 수 있게 됨
Link
로 어떤 url
을 호출하게 되면, 해당 url
로 이동시 렌더링 된 component
에는 아무런 파라미터를 주지 않아도 저절로 넘겨지는 것들이 있음
history
, match
, location
임
history
는 위에 적었으니 생략하고 match
는 파라미터를 읽어들이고, location
은 쿼리스트링을 읽어들일 때 사용
import React, { useEffect } from 'react';
function HistorySample({ history }) {
const goBack = () => {
history.goBack();
};
const goHome = () => {
history.push('/');
};
useEffect(() => {
console.log(history);
const unblock = history.block('정말 떠나실건가요?');
return () => {
unblock();
};
}, [history]);
return (
<div>
<button onClick={goBack}>뒤로가기</button>
<button onClick={goHome}>홈으로</button>
</div>
);
}
export default HistorySample;
따라서 단순히 위와 같은 코드를 적기만 해도,
뒤로가기
버튼을 누르면 이전 페이지로 가지고,
홈으로
버튼을 누르면 /
즉, /home
으로 이동함
당연히, 이를 위해서는 <Link to="/history" component={History}/>
가 App.js
든 어디든 선언되어 있어야 함
useEffect
안 에서의 history.block
은 자바스크립트의 confirm()
과 비슷함. 다른 홈페이지로 이동할 경우에 뜨도록, 즉 component
가 unmount
되려할 때 뜨고 확인
을 누르면, 다른 페이지로 이동하지만 취소
를 누르면 이동하지 않음