πŸŽ„ μ„±μž₯일지 4.0

μ±… ν–‰λ³΅ν•œ 이기주의자(웨인 닀이어)의 λ‚΄μš©μ— μžκ·Ήλ°›μ•„ μ‹œμž‘ν•˜λŠ” μ†Œλ°•ν•œ μ„±μž₯기둝

μ‚΄μ•„μžˆλŠ” 꽃과 죽은 꽃은 μ–΄λ–»κ²Œ κ΅¬λ³„ν•˜λŠ”κ°€?
μ„±μž₯ν•˜κ³  μžˆλŠ” 것이 μ‚΄μ•„ μžˆλŠ” 것이닀.
생λͺ…μ˜ μœ μΌν•œ μ¦κ±°λŠ” μ„±μž₯이닀!

🌳 (1.0)ν‚€μ›Œλ“œ
μ΅œλŒ€ν•œ κ°„λ‹¨ν•˜κ²Œ 정리, 좔후에 λ³΄λ©΄μ„œ 슀슀둜 μ„€λͺ…
πŸ‰ (2.0)κ²½ν—˜ μœ„μ£Όλ‘œ
λ‹¨μˆœ 정보λ₯Ό μ „λ‹¬ν•˜κΈ°λ³΄λ‹€ 무엇을 λ°°μ› κ³  μ–΄λ–»κ²Œ ν•΄κ²°ν–ˆλŠ”μ§€ 짧고 κ°„λ‹¨ν•˜κ²Œ μž‘μ„±
❄️ (3.0)정해진 ν…œν”Œλ¦Ώμ— λ§žμΆ°μ„œ
ν‚€μ›Œλ“œ, κ²½ν—˜ λͺ¨λ‘ μ’‹λ‹€. λ‹€λ§Œ 맀일 μž‘μ„±ν•˜κΈ°λ‘œ 마음 λ¨Ήμ€λ§ŒνΌ ν•΅μ‹¬λ§Œ κ°„κ²°ν•˜κ²Œ 정리할 수 있게 ν…œν”Œλ¦Ώμ„ μž‘μ„±
(3.1)230102λΆ€ν„° μ‹œμž‘λ˜λŠ” ν•™μŠ΅μ— κ΄€ν•œ λ‚΄μš© μΆ”κ°€
(3.2)230313λΆ€ν„° 쒀더 κ²½ν—˜, 감정 μœ„μ£Όμ˜ λ‚΄μš©λ„ λ‹΄κΈ°!
🌾 (4.0)ν•™μŠ΅ ν‚€μ›Œλ“œμ—μ„œ μ΅œλŒ€ν•œ κ°„λ‹¨ν•œ 정보 제곡, κ³ λ―Όμ—μ„œ λ‚΄ κ²½ν—˜μ„ μžμ„Ένžˆ 적자!

πŸ”‘ 였늘의 ν•™μŠ΅ ν‚€μ›Œλ“œ

λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈμ—μ„œ fetchν•œ 데이터λ₯Ό μžμ‹ μ»΄ν¬λ„ŒνŠΈμ—κ²Œ μ „λ‹¬ν•˜κΈ°

λΆ€λͺ¨μ»΄ν¬λ„ŒνŠΈμ—μ„œ apiλ₯Ό 톡해 dataλ₯Ό λ°›μ•„μ˜€κ³  이λ₯Ό μƒνƒœλ‘œ κ°–λŠ”λ‹€. 그리고 이 μƒνƒœλ₯Ό μžμ‹μ»΄ν¬λ„ŒνŠΈμ—κ²Œ μ „λ‹¬ν•˜μ—¬ λ Œλ”λ§ν•˜λ €λŠ”λ°, λ¬Έμ œκ°€ λ°œμƒν–ˆλ‹€.

μ•„λž˜μ™€ 같은 μ½”λ“œμ—μ„œ apiλ₯Ό 톡해 dataλ₯Ό λ°›μ•„μ˜€λŠ” λ‘œμ§μ€ λ Œλ”λ§ μž‘μ—…μ΄ μ•„λ‹ˆλ―€λ‘œ sideEffect둜 보고 useEffectλ₯Ό 톡해 λ Œλ”λ§ 후에 μ‹€ν–‰λ˜λ„λ‘ ν•œλ‹€. 그러면 dataμ—λŠ” null이 λ“€μ–΄κ°€κΈ° λ•Œλ¬Έμ—, λ§Œμ•½ Child μ»΄ν¬λ„ŒνŠΈμ—μ„œ dataλ₯Ό κ°–κ³  μ‹€ν–‰ν•˜λŠ” μ–΄λ–€ 둜직이 μžˆλ‹€λ©΄ (ex) data.userName) μ—λŸ¬κ°€ λ°œμƒν•œλ‹€.

const Parent = () => {
  const [data, setData] = useState(null);

  const fetchData = async (api: string) => {
    try {
      const res = await fetch(api);
      const data = await res.json();
      setIssueDetailData(data);
      console.log(data);
    } catch (error) {
      console.log(error);
    }
  };

  useEffect(() => {
    fetchData(TEMP_ISSUE_API);
  }, []);
  
  return (
    <div>
      <Child data={data} />
    </div>
  )
}

이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ μ•„μ£Ό κ°„λ‹¨ν•œ 방법은 아직 dataκ°€ 없을 λ•ŒλŠ” Child μ»΄ν¬λ„ŒνŠΈλ₯Ό λ Œλ”λ§ν•˜μ§€ μ•ŠλŠ” 것이닀. μ•„λž˜μ˜ μ½”λ“œμ™€ 같이 쑰건문 ν•˜λ‚˜λ§Œ μΆ”κ°€ν•˜λ©΄ λœλ‹€.

const Parent = () => {
  const [data, setData] = useState(null);

  const fetchData = async (api: string) => {
    try {
      const res = await fetch(api);
      const data = await res.json();
      setIssueDetailData(data);
      console.log(data);
    } catch (error) {
      console.log(error);
    }
  };

  useEffect(() => {
    fetchData(TEMP_ISSUE_API);
  }, []);
  
  return (
    <div>
      {data && <Child data={data} />} // dataκ°€ 없을 λ•ŒλŠ” Child μ»΄ν¬λ„ŒνŠΈλ₯Ό λ Œλ”λ§ν•˜μ§€ μ•ŠλŠ”λ‹€.
    </div>
  )
}

정말 별 κ±° 아닐 수 μžˆμ§€λ§Œ, 이건 ν•˜λ‚˜μ˜ νŒ¨ν„΄μœΌλ‘œ μƒκ°ν•˜κ³  κΈ°μ–΅ν•΄λ‘λŠ” 게 쒋을 것 κ°™λ‹€.

κ²°κ΅­ λ¦¬μ•‘νŠΈλ„ μžλ°”μŠ€ν¬λ¦½νŠΈ ν•¨μˆ˜μ— λΆˆκ³Όν•˜λ‹€.

μ—¬λŸ¬ κ³³μ—μ„œ μ‚¬μš©λ  Tag μ»΄ν¬λ„ŒνŠΈ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ©΄μ„œ λŠλ‚€ 생각이닀. λ­”κ°€ λ¦¬μ•‘νŠΈ ν•¨μˆ˜ μ»΄ν¬λ„ŒνŠΈν•˜λ©΄ μ–΄λ ΅κ²Œ λŠκ»΄μ§€κ³  λ³΅μž‘ν•˜κ²Œ μƒκ°λ˜μ§€λ§Œ, 생각해보면 κ·Έλƒ₯ λ‹¨μˆœν•˜κ²Œ ν•˜λ‚˜μ˜ ν•¨μˆ˜μΌ 뿐이닀.

Tag μ»΄ν¬λ„ŒνŠΈλ₯Ό μ§œλ©΄μ„œ μ•„λž˜μ™€ 같이 μ½”λ“œλ₯Ό μž‘μ„±ν•˜μ˜€λ‹€.

const Tag = ({ tagType, writerName, isOpen }: TagProps) => {
  return (
      <>
        {tagType === 'openClose' ? (
            isOpen ? (
                <div className="flex h-8 w-fit items-center justify-center gap-x-1 rounded-[50px] bg-blue px-4">
                  <AlertCircle stroke="#FEFEFE" />
                  <span className="text-sm text-gray-50">μ—΄λ¦° 이슈</span>
                </div>
            ) : (
                <div className="flex h-8 w-fit items-center justify-center gap-x-1 rounded-[50px] bg-navy px-4">
                  <Archive stroke="#FEFEFE" />
                  <span className="text-sm text-gray-50">λ‹«νžŒ 이슈</span>
                </div>
            )
        ) : (
            <div className="flex h-8 w-fit items-center justify-center gap-x-1 rounded-[50px] border border-gray-300 bg-gray-100 px-4 text-gray-600">
              {writerName}
            </div>
        )}
      </>
  );
};

export default IssueMainInfo;

λ­”κ°€ λ”± 봐도 μ€‘λ³΅λ˜λŠ” μš”μ†Œκ°€ 많고 μ§€μ €λΆ„ν•œ λŠλ‚Œμ΄ λ‚œλ‹€. 이 λ•Œ, λ”± κ·Έ 생각이 μŠ€μ³κ°”λ‹€. κ²°κ΅­μ—” ν•¨μˆ˜λΌλŠ” 것..! ν•΄μ„œ 좔후에 쒀더 κΉ”λ”ν•œ 둜직으둜 κ°œμ„ ν•΄λ³Ό μ˜ˆμ •μ΄λ‹€ :)

πŸ“ μš”μ•½ 및 ν•˜λ£¨ 간단 회고

μ»΄ν¬λ„ŒνŠΈλ₯Ό μ²˜μŒλΆ€ν„° μ„€κ³„ν•˜κ³  μ½”λ“œλ₯Ό μž‘μ„±ν•΄ λ‚˜μ•„κ°€λ‹ˆ μ‘°κΈˆμ€ 감이 μž‘νžŒλ‹€. λ­”κ°€ λ¦¬μ•‘νŠΈμ—μ„œ μ‚¬μš©ν•˜λŠ” ν•˜λ‚˜μ˜ νŒ¨ν„΄(?) ν˜Ήμ€ μ–΄λ–€ κ·Έ λͺ¨μ–‘(?)을 잘 κΈ°μ–΅ν•˜κ³  μΊμΉ˜ν•΄μ„œ μ‚¬μš©ν•˜λŠ” 게 쒋은 것 κ°™λ‹€. 처음 λ¦¬μ•‘νŠΈλ₯Ό λ°°μš°λŠ” μ‚¬λžŒμ΄ μƒκ°ν•˜κΈ°μ—” λ‹€μ†Œ μ–΄λ €μš΄ 뢀뢄듀도 있기 λ•Œλ¬Έμ΄λ‹€! κ·Έλž˜λ„ ν•˜λ‚˜λ³΄λ©΄ 재미있고 쾌감이 μžˆλ‹€! κ·ΈλŸ¬λ‹ˆ 더 μ—΄μ‹¬νžˆ μ •μ§„ν•˜μž!

였늘의 μž˜ν•œ 점

  • μ§„μ§œ μ •μ‹ μ°¨λ €μ„œ μ—΄μ‹¬νžˆ ν•˜λ €κ³  ν•œ 점
  • 슀슀둜 μŠ¬λŸΌν”„(?)에 지지 μ•Šκ³  μ—΄μ‹¬νžˆ λŒμ–΄μ˜¬λ¦¬λŠ” 점

였늘의 μ•„μ‰¬μš΄ 점

  • μ—†λ‹€..! μ§„μ§œ μ—†λŠ”λ“―~!

μ°Έκ³ 

  • μ—†μŒ