๊ฐœ๋ฐœ ๊ณต๋ถ€/๋ฐ๋ธŒ์ฝ”์Šค TIL

[ํด๋ผ์šฐ๋”ฉ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—”์ง€๋‹ˆ์–ด๋ง TIL] 240214 - React ์‹ค์ „ ํ”„๋กœ์ ํŠธ 2

๊ฐ€์šค์ด 2024. 2. 14. 17:29

Intro


์˜ค๋Š˜์€ ํ”„๋กœ์ ํŠธ์— ๋“ค์–ด๊ฐ€๊ธฐ ์œ„ํ•œ ๊ธฐ์ดˆ ๊ณต์‚ฌ์— ๋Œ€ํ•ด ํ•™์Šตํ–ˆ๋‹ค.

์ฒ˜์Œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ๋ญ๋ถ€ํ„ฐ ๊ฑด๋“œ๋ ค์•ผ ํ•  ์ง€ ๋ง‰๋ง‰ํ–ˆ๋Š”๋ฐ ๊ทธ๋Ÿฐ ๊ณ ๋ฏผ์„ ํ•ด์†Œํ•ด์ฃผ๋Š” ์œ ์ตํ•œ ๊ฐ•์˜์˜€๋‹ค.

 

 

 

์˜ค๋Š˜ ํ•™์Šตํ•œ ๋‚ด์šฉ

: ํŽ˜์ด์ง€ ๋ผ์šฐํŒ…, ํ”„๋กœ์ ํŠธ ๊ธฐ์ดˆ ๊ณต์‚ฌ


๋ฆฌ์•กํŠธ ํŽ˜์ด์ง€ ๋ผ์šฐํŒ… 2

React-router-dom์˜ Hooks

  • Path Variable - useParams
  • Query String - useSearchParams
  • Page Moving - useNavigate

useParams

์ฝœ๋ก (:) ๋’ค์— ์˜ค๋Š” ๋™์  URL์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๋Š” ํ•จ์ˆ˜

<Route path="/diary/:id" element={<Diary />} />
// diary/10
import { useParams } from 'react-router';

...

const { id } = useParams();
console.log(id); // 10

 

 

useSearchParams

์›น ํŽ˜์ด์ง€์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•

?๋กœ ์‹œ์ž‘

// ?id=10&mode=dark
import { useSearchParams } from 'react-router-dom';

...

const [searchParams, setSerachParams] = useSearchParams();
const id = searchParams.get('id'); // 10
  • ? ๋’ค์— ์˜ค๋Š” ๊ฐ’๋“ค์„ get ํ•จ์ˆ˜๋กœ ๊ฐ€์ ธ์˜จ๋‹ค. 
  • setSearchParams: searchParams ๊ฐ’์„ ๋ฐ”๊พธ๋Š” ์—ญํ• 
  • ex) setSearchParams({ id: '12345' })

 

useNaviagte

๋กœ๊ทธ์ธ๋˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•œ ํŽ˜์ด์ง€๋ฅผ ์ด์šฉํ•˜๋ ค๊ณ  ํ•  ๊ฒฝ์šฐ, ๊ฐ•์ œ๋กœ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™์‹œํ‚ฌ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ

import { useNavigate } from 'react-router-dom';

const Edit = () => {
  const navigate = useNavigate();

  return (
    <div>
      <h1>Edit</h1>
      <p>์ด๊ณณ์€ ์ผ๊ธฐ ์ˆ˜์ • ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.</p>
      <button
        onClick={() => {
          navigate('/home');
        }}
      >
        HOME์œผ๋กœ ๊ฐ€๊ธฐ
      </button>
      <button
        onClick={() => {
          navigate(-1);
        }}
      >
        ๋’ค๋กœ๊ฐ€๊ธฐ
      </button>
    </div>
  );
};

export default Edit;

 

 

 

 

 

 


ํ”„๋กœ์ ํŠธ ๊ธฐ์ดˆ ๊ณต์‚ฌ

  1. ํฐํŠธ ์„ธํŒ…
  2. ๋ ˆ์ด์•„์›ƒ ์„ธํŒ…
  3. ์ด๋ฏธ์ง€ ์—์…‹ ์„ธํŒ…
  4. ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ ์„ธํŒ…

ํฐํŠธ ์„ธํŒ…

: Google Web Fonts๋ฅผ ์ด์šฉํ•œ ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉ๋˜๋Š” ํฐํŠธ ์„ธํŒ…ํ•˜๊ธฐ

 

Browse Fonts - Google Fonts

Making the web more beautiful, fast, and open through great typography

fonts.google.com

โš ๏ธ ํฐํŠธ๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•  ๋•, ์˜คํ”ˆ ํฐํŠธ ๋ผ์ด์„ผ์Šค์ธ์ง€ ํ™•์ธํ•˜๊ธฐ!

 

๋ ˆ์ด์•„์›ƒ ์„ธํŒ…

: ๋ชจ๋“  ํŽ˜์ด์ง€์— ๋ฐ˜์˜๋˜๋Š” ๋ ˆ์ด์•„์›ƒ ์„ธํŒ…ํ•˜๊ธฐ

ํ™”๋ฉด์˜ ๋ฐฐ๊ฒฝ, ๊ธ€์ž ํฐํŠธ ๋“ฑ ๋ชจ๋“  ํŽ˜์ด์ง€์— ์ ์šฉ๋˜๋Š” ์Šคํƒ€์ผ์„ body๋‚˜ #root ํƒœ๊ทธ์— ์ ์šฉํ•œ๋‹ค.

 

์ด๋ฏธ์ง€ ์—์…‹ ์„ธํŒ…

: ์ด๋ฏธ์ง€๋“ค์„ ํ”„๋กœ์ ํŠธ์—์„œ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ ์„ธํŒ…ํ•˜๊ธฐ

<img src={process.env.PUBLIC_URL + '/assets/emotion1.png'} />
  • process.env.PUBLIC_URL: ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์—์„œ public ํด๋”์˜ ๊ฒฝ๋กœ

 

๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ ์„ธํŒ…

: ๋ชจ๋“  ํŽ˜์ด์ง€์— ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฒ„ํŠผ, ํ—ค๋” ์ปดํฌ๋„ŒํŠธ ์„ธํŒ…ํ•˜๊ธฐ

  • ๋ฒ„ํŠผ ๋“ฑ ํ”„๋กœ์ ํŠธ์—์„œ ๊ณตํ†ต์œผ๋กœ ์“ฐ์ด๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ํŒจํ„ดํ™”ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.
  • ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  props๋กœ ์กฐ๊ฑด์— ๋งž๊ฒŒ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌํ˜„

 

 

 

 

 

 

 

๋งˆ๋ฌด๋ฆฌ


๊ฐ•์ด๊ฐ€ ์งง์•„์„œ ๊ธˆ๋ฐฉ ๋๋‚ฌ๋Š”๋ฐ ๊ฐ•์˜๋ฅผ ๋“ฃ๋Š” ๊ฑฐ์—์„œ ๋๋‚˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๊ฐ•์˜์—์„œ ๋ฐฐ์šด ๊ฑธ ์‹ค๋ฌด์—์„œ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‚ด ๊ฒƒ์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ๋ณต์Šต์„ ์—ด์‹ฌํžˆ ํ•˜์ž!