History

History

๋ผ์šฐํŠธ๋กœ ์‚ฌ์šฉ๋œ ์ปดํฌ๋„ŒํŠธ์—๊ฒŒ match, location๊ณผ ํ•จ๊ป˜ ์ „๋‹ฌ๋˜๋Š” props ์ค‘ ํ•˜๋‚˜๋กœ, history๋ฅผ ํ†ตํ•ด ๋’ค๋กœ ๊ฐ€๊ฑฐ๋‚˜ ์•ž์œผ๋กœ ๊ฐ€๊ฑฐ๋‚˜ ํŠน์ • url๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

React Router

  • match : router path์™€ url์ด ๋งค์นญ๋œ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ ์žˆ๋‹ค.
  • location : ํ˜„์žฌ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ, url์˜ ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

import React, { useEffect } from "react";

function HistorySample({ history }) {
  //๋’ค๋กœ๊ฐ€๊ธฐ
  const goBack = () => {
    history.goBack();
  };

  //ํ™ˆ์œผ๋กœ ๊ฐ€๊ธฐ
  const goHome = () => {
    history.push("/");
  };

  // ํŽ˜์ด์ง€ ์ดํƒˆ์‹œ, ๋ฉ”์„ธ์ง€ ์ถœ๋ ฅ
  useEffect(() => {
    const unblock = history.block("์ •๋ง ๋– ๋‚˜์‹ค๊ฑด๊ฐ€์š”?");
    return () => {
      unblock();
    };
  }, [history]);

  return (
    <div>
      <button onClick={goBack}>๋’ค๋กœ๊ฐ€๊ธฐ</button>
      <button onClick={goHome}>ํ™ˆ์œผ๋กœ</button>
    </div>
  );
}

export default HistorySample;
  • push(path,[state]) : ์ƒˆ๋กœ์šด ๊ฒฝ๋กœ๋ฅผ history ์Šคํƒ์œผ๋กœ ํ‘ธ์‹œํ•˜์—ฌ ํŽ˜์ด์ง€ ์ด๋™
  • replace(path,[state]) : ์ตœ๊ทผ ๊ฒฝ๋กœ๋ฅผ history ์Šคํƒ์—์„œ ๊ต์ฒดํ•˜์—ฌ ํŽ˜์ด์ง€ ์ด๋™
  • go(n) : history ์Šคํƒ์˜ ํฌ์ธํ„ฐ๋ฅผ n๋ฒˆ์งธ๋กœ ์ด๋™
  • goBack() : ์ด์ „ ํŽ˜์ด์ง€๋กœ ์ด๋™
  • goForward() : ์•ž ํŽ˜์ด์ง€๋กœ ์ด๋™
  • block(prompt) : history ์Šคํƒ์˜ posh/pop ๋™์ž‘ ์ œ์–ด