카테고리 없음

(React)댓글기능 다양하게 구현해보기

이지영 2022. 6. 11. 13:58

댓글 기능을 두가지 방식으로 구현해 보았습니다 .

 

1번째방법 

array 배열을 이용해서 만들어보기

function Tabcontent(props){
    let [입력값,입력값변경]=useState("");
    let [글제목,글제목변경]=useState([]);

      return <div> 
       <form onSubmit={(e)=>{
         e.preventDefault();
         if(입력값===""){
          alert("글자를 입력하세요")
         return
         }else{
        글제목변경([입력값,...글제목])
        입력값변경("");
         }
         
       }}>
      <input onChange={(e)=>{입력값변경(e.target.value)}} value={입력값}></input>
      <button onClick={()=>{
        // let copy = [...글제목];
        // copy.unshift(입력값);
        // 글제목변경(copy);
      }}>댓글</button>
       </form>
  {  
        글제목.map(function(a, i){
          return (
          <div className="list">
            <h4>{ 글제목[i] }</h4>
            <button onClick={()=>{ 
              let copy = [...글제목];
              copy.splice(i, 1);
              글제목변경(copy);
           }}>삭제</button>
         
          </div> 
          )
        })      
}
      </div>

 

2번째 방법

push 함수를 사용해보기 


import './App.css';
import React,{useState} from "react";

function App() {
  const [Content,setContent] = useState("")
  const [ContentList, setContentList] = useState([]);
  const onSubmit =()=>{
    let tempArr = [...ContentList];
    tempArr.push(Content);
    setContentList(tempArr);
    setContent("")
};

  return (
    <div 
      style={{
        display : " flex ",
        flexDirection:"column",
        alignItems:"center",
        width:"100%",
      }}>

      {ContentList.map((a, i)=>{
        return <div
         key={i}
         style={{
         width:"100%",
         marginLeft:"1rem",
        }}
         >
           내용 : {ContentList[i]}
           <hr/>
           </div>
      })}
       <input type="text" 
        value={Content}
        onChange={(e)=>{
          setContent(e.currentTarget.value)
          }} 
          />
 
        <button 
          onClick={()=>{
          {onSubmit()}
          }}
          style={{marginTop:"1rem"}}>
          제출</button>
    </div>
  );
}

export default App;

push는 배열의 마지막에

unshift는 배열의 첫번째에 값을 추가할 수 있다