JS/react

React에서 Event 처리 어떻게 할까?

isaac.kim 2023. 6. 20.
728x90
반응형

React에서 Event 처리 어떻게 할까?

 

이전 글에서 React 컴포넌트를 만들고,

컴포넌트에 데이터를 전달하고,

컴포넌트로 전달받은 데이터는

props로 꺼내어 사용하는 방법까지 익혔다.

 

이전 글

2023.06.18 - [JS] - React.js Start 리액트 시작하기, React App 만들기

2023.06.19 - [JS] - React Props에 대해 알아보자. Component에 데이터 보내기

 

이번에는 React에서 Event 처리에 대해 알아보자.

 

 

 

반응형

 

 

 

현재까지 작성한 코드 예제를 보자.

function Header(props) {
  console.log("props",props,props.title)
  return <header>
        <h1><a href="/">{props.title}</a></h1>
      </header>
}
function Nav(props) {
  const lis = []
  for (let i=0; i<props.topics.length; i++) {
    let t = props.topics[i];
    lis.push(<li key={t.id}><a href={'/read/'+t.id}>{t.title}</a></li>)
  }
  return <nav>
  <ol>
    {lis}
  </ol>
</nav>
}
function Article(props) {
  return <article>
  <h2>{props.title}</h2>
  {props.body}
</article>
}

function App() {
  const topics = [
    {id:1, title:'html', body:'html is ...'},
    {id:2, title:'css', body:'css is ...'},
    {id:3, title:'javascript', body:'javascript is ...'}
  ]
  return (
    <div>
      <Header title="WEB"></Header>
      <Nav topics={topics}></Nav>
      <Article title="Welcome" body="Hello, WEB"></Article>
    </div>
  );
}

export default App;

현 예제 실행한 브라우저 속 화면

 

Header 컴포넌트의 WEB이라고 쓰인 제목 부분 클릭 시

a태그로 감싸져 있기 때문에 reload가 될 것이다.

 

먼저 'WEB' 제목을 클릭했을 때

화면 reload를 막도록 코드를 작성해 보자.

a 태그의 기본 event를 막는 것이다.

 

추가한 코드 부분이다.

일반적인 html에서 onClick 이벤트를 설정하는 문법과 약간 다르다.

 

중괄호( { } )를 사용해서 해당 이벤트에 javascript 코드를 넣어서

a 태그의 기본 이벤트 기능을 막는다. ( event.preventDefault(); )

 

arrow function으로 수정해도 똑같이 동작한다.

 

다음은 Header를 호출하는 App 컴포넌트에서

Header 컴포넌트로 이벤트를 전달하고

Header 컴포넌트에서 전달받은 이벤트를 호출하자.

 

 

onChangeMode라는 속성명으로 함수를 전달하고 있다.

기능은 alert('Header');

 

이를 사용하려면?

 

이전에 학습했던 props를 사용하면 된다.

props를 사용해서 전달받은 이벤트를 호출한다.

 

그러면

Header 제목을 클릭하면

기능 alert('Header'); 가 실행된다.

 

 

nav의 메뉴들에도 이벤트를 부여하자.

Nav 컴포넌트에도 onChangeMode 라는 속성명으로 함수를 전달한다.

기능은 파라미터로 들어온 id 값을 alert(id) 하는 기능이다.

Nav 컴포넌트에선 각 nav의 메뉴들에 감싸진

a 태그에 onClick 이벤트 리스너를 부여하고

기본 event를 막고 ( event.preventDefault(); )

props로 전달받은 onChangeMode 함수 이벤트를 호출한다.

 

a 태그에 id 값을 부여하고, 해당 id 값을 출력하도록

인자로 event.target.id 를 넣는다.

 

event는 발생한 이벤트 정보를 나타내고,

target은 발생한 이벤트의 타깃, 즉 이벤트 발생시킨 엘리먼트를 가리킨다.

event.target.id는 a태그에 부여되었던 id 값에 접근하는 것이다.

 


React

Component, Props에 이어서 Event에 대해서 알아보았습니다

 

728x90
반응형