이번 포스팅에서는 사용자의 입력을 받아 새로운 글을 업로드 하는 과정을 살펴보겠다.

input 태그

코드를 먼저 살펴보자.

function App() {
  let [inVal, setInVal] = useState('');
  return (
  	<div>
    	<input onChange={ (e) => { setInVal(e.target.value); }} />
    </div>
  )
}

하나하나 살펴보면 다음과 같은 정보들을 얻을 수 있다.

🎯 e.target 은 input 을 입력하는 공간을 의미한다.

🎯 e.target.value 는 input 값을 의미한다. 정확히는 e.target.value 은 input 을 입력하는 공간에 기입된 값을 의미하는데, 이는 input 값과 동치이기 때문이다.

🎯 onChange 는 input 값이 변경될 때마다 call 되는 함수이다. 위 코드는 input 값이 변경될 때마다 setInVal() 이 call 되는 기능을 수행한다.

Ex. 사용자 입력을 통한 새로운 글 업로드

사용자 입력을 통해 새로운 글을 업로드 하는 코드를 작성해보자.

코드는 다음과 같다.

input 태그에 있는 onChangebutton 태그에 있는 onClick 을 유심히 살펴보면 잘 이해할 수 있을 거다.

import React, {useState} from 'react'
import logo from './logo.svg'
import './App.css'

function App() {
  let [title, setTitle] = useState(['나이키', '아디다스', '퓨마']);
  let [thumb, setThumb] = useState([0, 0, 0]);
  let [inVal, setInVal] = useState('');
  return (
    <div>
      {
        title.map(function(e, i) {
          return (
            <div key={i}>
              <h3> { e }
                <span onClick={ () => {
                  var temp = [...thumb];
                  temp[i] = temp[i] + 1;
                  setThumb(temp);
                }}>👍</span> { thumb[i] }
              </h3>
            </div>
          )
        })
      }
      <input onChange={ (e) => { setInVal(e.target.value); } }></input>
      <button onClick={ () => {
        let _title = [...title];
        _title.unshift(inVal);
        let _thumb = [...thumb];
        _thumb.unshift(0);
        setTitle(_title);
        setThumb(_thumb);
      }}>버튼</button>
    </div> 
  )
}

export default App


결과 화면은 다음과 같이 출력된다.

Leave a comment