TIL 0322

zittoยท2023๋…„ 3์›” 25์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
8/77
post-thumbnail

๐Ÿท๏ธ [๋ชฉ์ฐจ]

  • ์‹ค๋ฌด์ „์šฉ๋ฐ˜๋ณต๋ฌธ
    • map
    • filter
    • HTMl๊ณผ ์—ฐ๊ฒฐํ•˜๊ธฐ
  • refetchQueries
  • map์˜ index๋ฅผ key๋กœ ์‚ฌ์šฉ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ 
    • React์—์„œ Key๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 
    • Index๋ฅผ Key๋กœ ์ค˜๋„ ๊ดœ์ฐฎ์€ ์ƒํ™ฉ

๐Ÿ–‡๏ธ [์ถœ์ฒ˜ ๋ฐ ์ฐธ์กฐ]

์ฝ”๋“œ์บ ํ”„
๋ฆฌ์ŠคํŠธ์™€ Key
index์™€ key



๐Ÿ’กย ์‹ค๋ฌด์ „์šฉ๋ฐ˜๋ณต๋ฌธ

1๏ธโƒฃ map

: ๋ฐฐ์—ด์˜ ์›์†Œ๋ฅผ ์ผ๊ด„์ ์œผ๋กœ ๋ณ€ํ˜•์‹œํ‚ฌ ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹๋‹ค.

  • ์‚ฌ์šฉ๋ฐฉ๋ฒ•!
const classmate = ["์ฒ ์ˆ˜","์˜ํฌ","ํ›ˆ์ด"]
classmate.map((item)=>(item+"์–ด๋ฆฐ์ด"))
=> (3)["์ฒ ์ˆ˜์–ด๋ฆฐ์ด","์˜ํฌ์–ด๋ฆฐ์ด","ํ›ˆ์ด์–ด๋ฆฐ์ด"] ์ด๋ ‡๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

-> map์•ˆ์—์„œ ์‚ฌ์šฉ๋˜๋Š” item์€ classmate์˜ ์›์†Œ๋“ค์ด ๋“ค์–ด๊ฐˆ ํŒŒ๋ผ๋ฏธํ„ฐ(๋งค๊ฐœ๋ณ€์ˆ˜) ์ด๋‹ค.

const classmate = [{ name: "์ฒ ์ˆ˜" }, { name: "์˜ํฌ" }, { name: "ํ›ˆ์ด" }];
  //item.name => "์ฒ ์ˆ˜","์˜ํฌ","ํ›ˆ์ด"
  //school ์†์„ฑ์„ ์ผ๊ด„์ ์œผ๋กœ ์ถ”๊ฐ€ํ•ด์ฃผ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
  classmate.map((item) => ({
    name: item.name + "์–ด๋ฆฐ์ด",
    school: "๋–ก์žŽ์œ ์น˜์›",
  }));
// ๊ฒฐ๊ณผ=> (3)
	[
      { name: "์ฒ ์ˆ˜์–ด๋ฆฐ์ด", school: "๋–ก์žŽ์œ ์น˜์›" },
	  { name: "์˜ํฌ์–ด๋ฆฐ์ด", school: "๋–ก์žŽ์œ ์น˜์›" },
	  { name: "ํ›ˆ์ด์–ด๋ฆฐ์ด", school: "๋–ก์žŽ์œ ์น˜์›" },
	];

-> ๊ฐ์ฒด๊ฐ€ ์›์†Œ์ธ ๋ฐฐ์—ด์—์„œ๋„ map์„ ์ด์šฉํ•ด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

โœ… ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ () โ‡’ {} vs () โ‡’ ()

โ†’ ์†Œ๊ด„ํ˜ธ ()๋กœ ๊ฐ์‹ธ์ง„ ๋ถ€๋ถ„์ด return ๋จ
(return๋ฌธ์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋ฆฌํ„ด๋จ.)
๋ฐ˜๋ฉด
์ค‘๊ด„ํ˜ธ{}๋กœ ๊ฐ์‹ธ์ง„ ํ•จ์ˆ˜๋Š” return๋ฌธ์ด ์—†๋‹ค๋ฉด ๋ฐ˜ํ™˜๊ฐ’์ด ์—†๋‹ค.

โœ… ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์—์„œ ์†Œ๊ด„ํ˜ธ ์ƒ๋žต์ด ๊ฐ€๋Šฅํ• ๊นŒโ“

โ†’ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๊ฐ€๋Šฅํ•˜๋‹ค
ํ•จ์ˆ˜์˜ ๋ฐ”๋””์•ˆ์˜ ์ฝ”๋“œ๊ฐ€ ํ•œ์ค„์ด๋ผ๋ฉด ์ƒ๋žต์ด ๊ฐ€๋Šฅ

โœ… ๊ทธ๋ ‡๋‹ค๋ฉด ์–ธ์ œ ์ƒ๋žต์ด ๋ถˆ๊ฐ€๋Šฅ ํ• ๊นŒ?

โ†’ ๋ฐ”๋””์— ์ ํžˆ๋Š” ์ฝ”๋“œ๊ฐ€ ํ•œ์ค„ ์ด์ƒ์ด๊ฑฐ๋‚˜ ๋ฆฌํ„ด๊ฐ’์ด ๊ฐ์ฒด์ธ ๊ฒฝ์šฐ์—” ์ƒ๋žต์ด ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋‹ค
์ค‘๊ด„ํ˜ธ๊ฐ€ ์—†์–ด์ง€๋ฉด ๊ฐ์ฒด์˜ ์ค‘๊ด„ํ˜ธ๊ฐ€ ํ•จ์ˆ˜์˜ ์ค‘๊ด„ํ˜ธ๊ฐ€ ๋˜์–ด๋ฒ„๋ฆผ.
๋”ฐ๋ผ์„œ ๋ฆฌํ„ด๊ฐ’์ด ๊ฐ์ฒด์ผ ๊ฒฝ์šฐ์—” ์ƒ๋žตํ•˜๋ฉด ์•ˆ๋จ!

  • HTML ๊ณผ ์—ฐ๊ฒฐํ•˜๊ธฐ
// RenderMap ์ปดํฌ๋„ŒํŠธ
const RenderMap = () => {
  const classmate = ["์ฒ ์ˆ˜", "์˜ํฌ", "ํ›ˆ์ด"];
  return (
    //์ค‘๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ปดํฌ๋„ŒํŠธ์˜ return๊ฐ’ ์•ˆ์œผ๋กœ ๋ฐ๋ฆฌ๊ณ  ๋“ค์–ด์˜จ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.
    //๋ฆฌํ„ด๋˜์–ด์•ผ ํ•  ๊ฐ’์ด ํ•œ์ค„์ด๊ธฐ๋•Œ๋ฌธ์— ๊ด„ํ˜ธ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    <div>
      {classmate.map((item) => (
        <div>{item}์–ด๋ฆฐ์ด</div>
      ))}
    </div>
  );
};
export default RenderMap;

2๏ธโƒฃ filter

๋ฐฐ์—ด์˜ ์›์†Œ๋ฅผ ํ•„ํ„ฐ๋ง ํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ
๊ฐ์ฒด ํ˜น์€ ๋ฐฐ์—ด์˜ ๊ฐ ์›์†Œ๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ๊ทธ ์กฐ๊ฑด์— ๋งž๋Š” ์›์†Œ๋“ค๋งŒ ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ ๋„์ถœํ•ด์ค€๋‹ค.

โœ… ์‚ฌ์šฉ๋ฐฉ๋ฒ•

const num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
num.filter((item) => item <= 8);
=> (8) [1, 2, 3, 4, 5, 6, 7, 8]

โœ… map๊ณผ filter์˜ ๊ฒฐ๊ณผ๋ฌผ ์ฐจ์ด์ 

โ†’ map์€ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋งŒํผ ๊ฐ’์ด ๋‚˜์˜ค์ง€๋งŒ, filter๋Š” ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ณด๋‹ค ์ ๊ฒŒ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ’ก refetchQueries

๊ธฐ์กด์— ๋ฐ›์•„์™”๋˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ ๋˜์—ˆ์„ ๊ฒฝ์šฐ ์ตœ์‹  ๋ฐ์ดํ„ฐ๋กœ ๋‹ค์‹œ fetch ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

๋งŒ์•ฝ์— ๊ฒŒ์‹œํŒ์— ๋“ฑ๋ก ๋œ ๊ธ€์„ ์‚ญ์ œํ–ˆ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ ์‚ญ์ œ๊ฐ€ ์ž˜ ๋˜์—ˆ๋Š” ์ง€ ํ™•์ธ์„ ํ•ด์•ผ ํ•œ๋‹ค.
์ƒˆ๋กœ๊ณ ์นจ ์‹œ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋ฉด์„œ ๋‹ค์‹œ API๋ฅผ ์š”์ฒญํ•˜๋Š”๋ฐ
DB์—์„œ ์‚ญ์ œ๊ฐ€ ๋œ ๊ฒŒ์‹œ๋ฌผ๋งŒ ๋นผ๊ณ  ์‹คํ–‰๋œ๋‹ค.
ํ•˜์ง€๋งŒ ๋งค๋ฒˆ ์ƒˆ๋กœ๊ณ ์นจ ํ•ด์„œ ํ•  ์ˆ˜ ์—†์Œ.
๋”ฐ๋ผ์„œ ์‚ญ์ œ๊ฐ€ ๋๋‚˜๊ณ  fetchboard๋„ ๋‹ค์‹œ ํ•œ๋ฒˆ ์š”์ฒญ์„ ํ•ด์•ผํ•œ๋‹ค!
๋ฐฑ์—”๋“œ์—์„œ ๋‹ค์‹œ ์žฌ์š”์ฒญํ•ด์•ผํ•จ!
์ด๊ฒƒ์„ ๋ฆฌํŒจ์น˜๋ผ๊ณ  ํ•œ๋‹ค.

//๊ฒŒ์‹œํŒ ์‚ญ์ œ ํ›„ ๋ฆฌํŽ˜์น˜ ์‹ค์Šต
import { useQuery, gql, useMutation } from "@apollo/client";
// import { Fragment } from "react/cjs/react.production.min";
const FETCH_BOARDS = gql`
  query {
    fetchBoards {
      number
      writer
      title
      contents
    }
  }
`;
//1. ์‚ญ์ œ๋ฎคํ…Œ์ด์…˜ ๋งŒ๋“ค๊ธฐ
//2. ์ฟผ๋ฆฌ๋ฌธ(์งˆ์˜๋ฌธ)
//3. deleteํ•จ์ˆ˜์—์„œ ์‹คํ–‰!
const DELETE_BOARDS = gql`
  mutation deleteBoard(Number:Int){
    deleteBoard(number: $number){
        message
    }
  }
  `;
export default function StaticRoutingPage() {
  const { data } = useQuery(FETCH_BOARDS); //api๋ชฉ๋ก์„ ์กฐํšŒํ•ด์„œ ๋ฐ›์•„์˜ค๊ณ  ๋ฐ์ดํ„ฐ์— ์ €์žฅ -> state๊ฐ€ ๋ฐ”๋€œ ์ด ๋‘๋ฒˆ ๋ Œ๋”๋ง
  console.log(data); //์ž˜ ๋ฌ๋Š”์ง€ ์กฐํšŒํ•˜๊ธฐ
  const [deleteBoard] = useMutation(DELETE_BOARDS); //์ฟผ๋ฆฌ๋ฌธ์€ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ์—์„œ ๋ณด๊ณ  ์ž‘์„ฑํ•œ๋‹ค!
  const onClickDelete = (event) => {
    //ํด๋ฆญํ–ˆ์„ ๋•Œ ๋ฒˆํ˜ธ๋ฅผ ์ค„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•
    //๋ฒ„ํŠผํ•˜๋‚˜ํ•˜๋‚˜๋งˆ๋‹ค ๊ณ ์œ ์•„์ด๋””๊ฐ€ ์žˆ์Œ. 10๋ฒˆ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด 10๋ฒˆํƒœ๊ทธ๊ฐ€ event.target์ด ๋จ
    deleteBoard({
      variables: {
        number: Number(event.target.id),
      }, //์—ฌ๊ธฐ๊ฐ€์ง€ ํ–ˆ์„ ๋•Œ ํ•œ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ. ์‚ญ์ œ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด ์‚ญ์ œ๋˜์ง€๋งŒ ์šฐ๋ฆฌ ๋ˆˆ์— ์•ˆ๋ณด์ด๊ณ  ์ƒˆ๋กœ๊ณ ์นจํ•ด์•ผ ๋ณด์ž„.
      refetchQueries: [{ query: FETCH_BOARDS }], //๋‹ค์‹œ ์žฌ์š”์ฒญํ•ด์•ผํ•จ.
    });
  };
  return (
    <>
      {data?.fetchBoards.map(
        (
          el,
          index //์˜ต์…”๋„์ฒด์ด๋‹!
        ) => (
          <div key={el.number}>
            {/* index๋Š” ๊ฒŒ์‹œ๊ธ€ ์‚ญ์ œ ์‹œ ๋‹ค์Œ ๊ฒŒ์‹œ๊ธ€์ด ์œ„๋กœ ์˜ฌ๋ผ์˜ค๋ฉด์„œ ๊ธฐ์กด index์™€ ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ–๊ฒŒ ๋˜๋ฏ€๋กœ, ์œ ์ผํ•˜์ง€ ์•Š์€ ๊ฐ’์ด๋œ๋‹ค. */}
            <span>
              <input type="checkbox" />
            </span>
            <span style={{ margin: "10px" }}>{el.number}</span>
            <span style={{ margin: "10px" }}>{el.title}</span>
            <span style={{ margin: "10px" }}>{el.writer}</span>
            <span>
              <button id={el.number} onClick={onClickDelete}>
                ์‚ญ์ œ
              </button>
            </span>
          </div> //ํŠน๋ณ„ํ•œ ์ด์œ ๊ฐ€ ์—†๋‹ค๋ฉด fragement๋กœ ๊ฐ์Œ€ ๊ฒƒ! <div>์˜ ๊ฒฝ์šฐ 1๊ฐœ ๋” ๊ทธ๋ ค์•ผ ๋˜์„œ ์กฐ๊ธˆ ๋Š๋ ค์ง
          // const qqq = {margin:10px} ๋งจ๋์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ค‘๊ด„ํ˜ธ ์•ˆ์—๋Š” ๊ฐ์ฒด์˜ ์ค‘๊ด„ํ˜ธ์ž„.
        )
      )}
    </> //์ž„์‹œ ๋ฌถ์Œ ์šฉ๋„ ๊ฐ™์€ ๋‚ด์šฉ์„ ๋‚ด๋ณด๋‚ผ ๋•Œ ๊ตณ์ด ๋ฐ•์Šค๋กœ ๊ฐ์‹ธ์ง€ ์•Š์•„๋„ ๋ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” fragment๋ผ๊ณ  ํ•˜๋Š” ๋นˆํƒœ๊ทธ
  );
}

๐Ÿ’ก map์˜ index๋ฅผ key๋กœ ์‚ฌ์šฉ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ 

โœ… React์—์„œ Key๊ฐ€ ํ•„์š”ํ•œ ์ด์œ  โ“

import { Test } from '../../src/test2';
export default function Test2() {
	const List = ['์‚ฌ๊ณผ', '๋”ธ๊ธฐ', '๋ฐ”๋‚˜๋‚˜'];
	return (
		<>
			{List.map((data) => (
				<Test>{data}</Test>
			))}
		</>
	);
}

-> map ์‚ฌ์šฉ ์‹œ key๊ฐ’์„ ๋ถ€์—ฌํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
ํ•ด๋‹น ๊ฒฝ๊ณ ๋Š” React๊ฐ€ ์–ด๋–ค ์š”์†Œ๋ฅผ ๋ณ€๊ฒฝ, ์ถ”๊ฐ€, ์‚ญ์ œํ• ์ง€ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.
๋ฆฌ์•กํŠธ ์ž…์žฅ์—์„œ๋Š” ๋ญ”์ง€ ์•Œ์•„์•ผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š”๋ฐ
์šฐ๋ฆฌ๊ฐ€ ๋”ฐ๋กœ ์•Œ๋ ค์ฃผ์ง€ ์•Š์•„์„œ ๋™์ผํ•œ ๋…€์„์œผ๋กœ ๋ณด๊ณ  ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•˜๊ณ  ์žˆ์Œ.
๋”ฐ๋ผ์„œ ๊ฐ ์ž์‹์— ํ‚ค๊ฐ’์„ ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

import { Test } from '../../src/test2';
export default function Test2() {
	const List = ['์‚ฌ๊ณผ', '๋”ธ๊ธฐ', '๋ฐ”๋‚˜๋‚˜'];
	return (
		<>
			{List.map((data) => (
				<Test key={id}>{data}</Test>
			))}
		</>
	);
}

-> map์„ ์‚ฌ์šฉํ•ด ๋ฐ˜๋ณตํ•ด์„œ ๋Œ๋ฆฌ๋ฏ€๋กœ ํšจ์œจ์ ์œผ๋กœ ๋Œ๋ฆด ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•˜๊ฒŒ ๋œ๋‹ค.
Key๊ฐ’๋งŒ ๋น„๊ตํ•˜์—ฌ Key๊ฐ€ ์ถ”๊ฐ€ ๋๋Š”์ง€, ์‚ญ์ œ ๋๋Š”์ง€๋งŒ ๋น„๊ตํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ๋น„๊ต๋‚˜ ๋ Œ๋”๋ง์„ ์—†์• ์ฃผ๋„๋ก ํ•œ๋‹ค.
์—ฌ๊ธฐ์„œ ์•ˆ์ •์ ์ธ ๊ณ ์œ ์„ฑ์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•ด ์ค‘๋ณต๋˜๋Š” ๊ฐ’์ด ์•„๋‹Œ ๊ฒƒ์œผ๋กœ ์ง€์ •ํ•ด ์ค˜์•ผํ•œ๋‹ค.

  • ์‹ค์Šต
    -> map์—์„œ๋Š” index๋„ ๊ฐ™์ด ๋“ค์–ด์˜จ๋‹ค.
    index๋Š” ์ค‘๋ณต๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— index๋ฅผ key๋กœ ํ•ด์ค˜๋„ ๋จ.
    ํ•˜์ง€๋งŒ index๋ฅผ ํ‚ค๋กœ ์ฃผ๊ฒŒ ๋˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊น€
    ์‚ญ์ œ ์‹œ์— ์ฒดํฌํ•˜๊ณ  ์‚ญ์ œ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด (๋‘˜์ด ๊ด€๊ณ„๋Š” ์—†์Œ) ์ฒดํฌํ‘œ์‹œ๊ฐ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š์Œ.
    el.number๋ฅผ key๋กœ ํ•˜๋ฉด ์ž˜ ์‚ฌ๋ผ์ง
    number์™€ index๋‘˜๋‹ค ์ค‘๋ณต๋˜์ง€ ์•Š์€๋ฐ ๋‹ค๋ฅธ ์ด์œ ๋Š”?
    ๋งŒ์•ฝ 7๋ฒˆ index๋ฅผ ์ฒดํฌํ•˜๊ณ  ์‚ญ์ œํ–ˆ์„ ๋•Œ ์•„๋ž˜์ชฝ์ด ์œ„์ชฝ์œผ๋กœ ์˜ฌ๋ผ์˜ด
    number๋Š” ์•„์˜ˆ ๊ณ ์œ ๊ฐ’
    ํ•˜์ง€๋งŒ index๋Š” 0๋ถ€ํ„ฐ ๋ฐ˜๋ณต๋˜๋Š” ์• ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋‹ค์Œ๋ฒˆ์˜ ๋ฒˆํ˜ธ๊ฐ€ ์ƒ์œ„๋กœ ์˜ฌ๋ผ์˜ค๊ฒŒ ๋œ๋‹ค.
    ๋”ฐ๋ผ์„œ index๋ฅผ ํ‚ค๊ฐ’์œผ๋กœ ์ฃผ๋Š”๊ฑด ์ข‹์ง€ ์•Š์€ ๋ฐฉ๋ฒ•์ž„.

โœ… Index๋ฅผ Key๋กœ ์ค˜๋„ ๊ดœ์ฐฎ์€ ์ƒํ™ฉ

  1. ์ •์ ์ธ ๋ฐ์ดํ„ฐ. ๊ณ„์‚ฐ๋˜์ง€ ์•Š๊ณ  ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ
  2. map์— ์žˆ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ์— id๊ฐ€ ์—†์„ ๊ฒฝ์šฐ
  3. ๋ฐ์ดํ„ฐ๊ฐ€ ์žฌ์ •๋ ฌ๋˜๊ฑฐ๋‚˜ ํ•„ํ„ฐ๋ง ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ.
    (๊ณ„์† ๊ทธ ์ž๋ฆฌ ๊ทธ๋Œ€๋กœ)
    ํ•˜์ง€๋งŒ ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ผ๋ฉด ๊ทธ๋Ÿด๋ฆฌ ์—†์Œ.

<๋“ฑ๋ก/์ˆ˜์ •ํŽ˜์ด์ง€ ์ˆœ์„œ>
1. ๋“ฑ๋กํŽ˜์ด์ง€์—์„œ ์ƒ์„ธํŽ˜์ด์ง€๋กœ ๊ฐ€๋Š” ์ด๋™๋ฒ„ํŠผ ๋งŒ๋“ค๊ธฐ
2. ๋ผ์šฐํŒ… ํ‘ธ์‰ฌ๋กœ ์ƒ์„ธํŽ˜์ด์ง€ ์ด๋™์‹œ์ผœ์ฃผ๊ธฐ
3. ์ƒ์„ธํŽ˜์ด์ง€์—์„œ ์ˆ˜์ •ํ•˜๊ธฐ ๋ฒ„ํŠผ ๋งŒ๋“ค๊ธฐ
4. ๋ฐ”์šด๋”ฉ ํ•ด์ฃผ๊ธฐ
5. ์ˆ˜์ •ํŽ˜์ด์ง€๋กœ ๋ผ์šฐํŒ… ํ‘ธ์‰ฌํ•ด์ฃผ๊ธฐ -> ${router.query.[dynamicrounting folder]}
6. ๋“ฑ๋กํ•˜๊ธฐ ํŽ˜์ด์ง€ ์ž‘์—… ์‹œ์ž‘
7. isEdit๋ฐ์ดํ„ฐ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์— ๋„˜๊ฒจ์ค˜์„œ ์ˆ˜์ •์ธ์ง€ ๋“ฑ๋ก์ธ์ง€ ์•Œ๋ ค์ค€๋‹ค.
(props ์ฒ˜๋ฆฌํ•˜๊ธฐ)
8. ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋‹ค์‹œ ํ”„๋ ˆ์  ํ„ฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์ค€๋‹ค.
9. ํ”„๋ ˆ์  ํ„ฐ์—์„œ onClick์— ํ•จ์ˆ˜๋ฅผ ๋ฐ”์ธ๋”ฉํ•  ๋•Œ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.
10. ์ˆ˜์ •ํ•จ์ˆ˜(์—…๋ฐ์ดํŠธํ•จ์ˆ˜)๊ฐ€ ๋”ฐ๋กœ ํ•„์š”ํ•˜๋‹ˆ๊นŒ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋งŒ๋“ค์–ด์„œ ๋‹ค์‹œ ๋„˜๊ฒจ์ค˜์•ผ ํ•จ!
11. ์ˆ˜์ •ํ•จ์ˆ˜ ์•ˆ์— ์ˆ˜์ • mutaiton ๋‚ ๋ฆฌ๋Š” ๋กœ์ง์ž‘์„ฑํ•ด์ฃผ๊ธฐ
12. import export ๊นŒ๋จน์ง€ ๋ง๊ธฐ!
13. ๋“ฑ๋กํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ˆ˜์ •ํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋„๋ก await/async ์‚ฌ์šฉํ•˜๊ธฐ
14. ์ˆ˜์ •๋œ ๊ฒฐ๊ณผ๋ฅผ result์— ๋ฐ›์•„์„œ ์ถœ๋ ฅํ•œ๋‹ค.



๐Ÿฅš MEMO

  1. ๋ฐ์ดํ„ฐ์˜ ๋ฐฉํ–ฅ ๋ถ€๋ชจ -> ์ž์‹
    (props๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌํ•ด์ค„๊ฒŒ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•ด!)
    ์ปดํฌ๋„ŒํŠธ๋Š” ์ž์‹ -> ๋ถ€๋ชจ๋กœ ์ „๋‹ฌ
    (ํ”„๋ ˆ์  ํ„ฐ์•ผ ๋‚ด ์ปดํฌ๋„ŒํŠธ ๋‘๋ฆด๊ฒŒ~~ํ•ฉ์ณ์ค˜!)
  2. presenter์™€ UI๋ฅผ ๊ฐ™์ด ๋น„๊ตํ•˜๋ฉด์„œ ๋ณด์ž!
  3. ์ปดํฌ๋„ŒํŠธ ์žฌ์‚ฌ์šฉ๊ด€์ ์—์„œ ์ˆ˜์ •ํ•˜๊ธฐ ๋งŒ๋“ค๊ธฐ!
    ์ˆ˜์ •ํ•˜๊ธฐ๋ฅผ ๋˜ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ๋“ฑ๋กํ•˜๊ธฐ๋ฅผ ์žฌ์‚ฌ์šฉํ•œ๋‹ค!
  4. key๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ, ๊ฐ€์ƒ DOM์„ ๋น„๊ตํ•˜๋Š” ๊ณผ์ •์—์„œ ์ˆœ์ฐจ์ ์œผ๋กœ ๋น„๊ตํ•˜๋ฉฐ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•œ๋‹ค.
    key๊ฐ€ ์žˆ๋‹ค๋ฉด, ์ด ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ์–ด๋–ค ๊ฒƒ์ด ์ˆ˜์ •์ด ๋๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
profile
JUST DO WHATEVER

0๊ฐœ์˜ ๋Œ“๊ธ€