본문 바로가기

React

5. 이벤트 처리

💨 이벤트 처리(헨들링) 방법 

 

1) 헨들링 함수 선언 

 

const App = () => {
  const handleClick = () => {
    alert("클릭");
  }
  return (
    <div>
      <button onClick={handleClick}>클릭!</button>
    </div>
  );
};

 

2) 익명 함수로 처리 

 

const App = () => {
  return (
    <div>
      <button onClick={() => { alert('클릭')}
      }>클릭!</button>
    </div>
  )
}

 

💨 이벤트 객체 

 

const App = () => {
  const handleChange = (event) => {
    console.log(event.target.value + "라고 입력하셨네요.");
  }
  return (
    <div>
      <input onChange={handleChange} />
    </div>
  );
};

 

- DOM Element 의 경우 핸들링 함수에 이벤트 object를 매개변수로 전달한다. 

 

- 이벤트 object 를 이용하여 이벤트 발생 원인, 이벤트가 일어난 Element에 대한 정보를 얻을 수 있다. 

 

 

💨 많이 쓰이는 DOM 이벤트 

 

onClick, onChange, onKeyDown, onKeyUp, onFocus 등등 ... 

 

💨 DOM Input 값을 State에 저장하기 

 

const App = () => {
  const [inputValue, setInputValue] = 
  useState("defaultValue");
}

  const handleChange = (event) => {
    setInputValue(event.target.value);
  }

  return (
    <div>
      <input onChange={handleChange}
      defaultValue={inputValue} />
      <br />
      입력한 값은: {inputValue}
    </div>
  );
  };

 

event object의 target은 이벤트의 원인이 되는 Element를 가리킨다.

현재  event의 target은 input element이므로 입력된 value를 가져와 setState 하는 모습이다.

 

✅ dynamic key 

 

object의 값을 변경할 때 보통 object.key = "value" 와 같이 작성하지만,

object["key"] = "value" 처럼 작성할 수 있으며 "key" 대신 다른 변수를 대입하여 다이나믹하게 값을 변경할 수 있다.

 

const object = {
    a: "내용1",
    b: "내용2",
    c: "내용3"
}
const key = "b";
object[key] = "값 변경!"
console.log(object); // { a: "내용1", b: "값 변경!", c: "내용3" }

 

EX)

 

const App = () => {
  const { user, value } = useState({ name: "멍식", school: "국민대학교"});

  const handleChange = (event) => {
    const { name, value } = event.target;
    constr newUser = { ...user };
    newUser[name] = value;
    setUser(newUser);
  }
}

 

 

💨 커스텀 이벤트 

 

const SOS = ({onSOS}) => {
  const [ count, setCount ] = useState(0);
  const handleClick = () => {
    if(count >= 2) {
      onSOS();
    }
    setCount(count + 1);
  }
  return <button onClick={handleClick}>
    세 번 누르면 긴급호출({count})
  </button>
}

 

const App = () => {
  return (
    <div>
      <SOS 
        onSOS={() => {
          alert("긴급사태!");
        }}
      />
    </div>
  )
}

 

단순히 DOM 이벤트를 활용하는 것을 넘어서 나만의 이벤트를 만들 수도 있다.

'React' 카테고리의 다른 글

* SPA, MPA, CSR, SSR  (0) 2022.03.07
6. Hooks  (0) 2022.03.05
4. State  (0) 2022.03.03
3. Props  (0) 2022.03.02
2. Component  (0) 2022.03.02