어쩌다 알게 된 ƪ(•̃͡•̃͡ ƪ

🟦 [React] trim(), 기존 useState에 배열 추가하기 2 본문

개발/🟦 React

🟦 [React] trim(), 기존 useState에 배열 추가하기 2

비니_ 2025. 1. 31. 21:15
728x90

✔ 동적으로 생긴 컴포넌트의 좋아요 버튼 동작하게 하기

 

🚫오류🚫

 

 

코드 👇

import { useState, useEffect } from 'react'
import './App.css'

function App() {
  let [구이름, 구이름변경] = useState(['강남구', '송파구', '서초구']);
  let [like, setLike] = useState([0, 0, 3]);
  let [입력값, 입력값변경] = useState('');

  useEffect(() => {
    console.log(like);
  }, [like])

  // 행 추가 함수
  const btnAdd = () => {
    if (입력값.trim() === '') {
      return; // 입력값이 비어있을 때는 아무 것도 추가하지 않음
    }
    const 구이름추가 = [...구이름, 입력값]; // 기존 구이름 배열에 새 값 추가
    구이름변경(구이름추가); // 상태 업데이트하여 새로운 배열로 변경

    const like추가 = [...like, 0]; // 기존 like 배열에 새 값 추가 ✅
    setLike(like추가); // 상태 업데이트하여 새로운 배열로 변경 ✅

    입력값변경(''); // 입력값 초기화
  };

  return (
    <>
      <div>
        {구이름.map((a, index) =>
          <Div key={index}
            index={index}
            구이름={구이름}
            like={like[index]}
            setLike={setLike}
          />
        )}
      </div>

      <input
        type="text"
        value={입력값}
        onChange={(e) => 입력값변경(e.target.value)} // 입력값 상태 업데이트
      />
      <button onClick={btnAdd}>행 추가</button>
    </>
  )
}

function Div({ index, 구이름, like, setLike }){
  const likeCount = (e) => {
    e.stopPropagation();
    setLike((prevLikes) => {
      const updateLikes = [...prevLikes];
      updateLikes[index] = updateLikes[index] + 1;
      return updateLikes;
    })
  };

  return(
    <>
      <div style={{ marginTop: '10px' }} onClick={() => { console.log(5); }}>
        <span>{구이름[index]}</span>
        <button onClick={likeCount}>💙 <span>{like}</span></button>
      </div>
    </>
  )
}

export default App;

 

 

결과 👇

 

 

처음 에러를 봤을 땐 막막 했는데 차근차근 생각하고 풀어가니까 별거 아니였다...!!!!!

 

 

 

🟦 [React] .trim(), 기존 useState에 배열 추가하기

✔ input에 작성하고 '행 추가' 버튼을 누르면 행이 추가 되게 하라!-> btnAdd 함수가 구이름 배열에 새로운 값(사용자가 입력한 값)을 추가하고, 그에 따라 Div가 갱신되도록 해야 함 코드 👇import { u

dazzle-bini.tistory.com

 

728x90
Comments