Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 1인 게임 개발
- FPS
- 프로그래머스 #최소힙 #우선순위 큐
- 유니티 3D
- 유니티
- 게임 개발
- 필기
- portal
- 합격
- 정처기
- Pong
- 1인 게임 제작
- 유니티3d
- 토이 프로젝트
- 3회차
- 게임
- Vampire Survivors
- 자바스크립트
- 퐁
- Unity
- 정처기 필기
- 정보처리기사
- 1인 개발
- 1인 게임
- 게임제작
- Unity2D
- unity3d
- 게임 제작
- 자바스크립트 게임
- Unity #Unity2D #Portal
Archives
- Today
- Total
Coding Feature.
React #5 이벤트 본문
만약 사용자가 정의한 컴포넌트에서 alert 이벤트를 실행할 수 있도록 하고 싶다면,
<Header title="WEB" onChangeMode={
function(){
alert('Header');
}
}></Header>
로 작성하여 onChangeMode에서 function을 옮겨주고,
function Header(props){
return <header>
<h1><a href="/" onClick={function(event){
event.preventDefault();
props.onChangeMode();
}}>{props.title}</a></h1>
</header>
}
작성.
이때 onclick으로 쓰지 않고 onClick과 같이 대문자인 이유는
유사 HTML이기 때문에 React는 onClick으로 작성해야 하기 때문.
event.preventDefault()는 태그의 기본 동작을 막고(리로드 방지),
props.onChangeMode()로 함수를 실행한다.
function(event) 대신
(event)=> 또는 event=>로 변경가능.
(인자가 하나 밖에 없다면 괄호도 생략 가능)
만약,
const topics = [
{id:1, title:'html', body:'html is ...'},
{id:2, title:'css', body:'css is ...'},
{id:3, title:'javascript', body:'javascript is ...'}
]
<Nav topics={topics} onChangeMode={(id)=>{
alert(id);
}}></Nav>
처럼 alert를 통해 각 id를 나타내고 싶다면,
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 id={t.id} href={'/read/'+t.id} onClick={event=>{
event.preventDefault();
props.onChangeMode(event.target.id);
}}>{t.title}</a>
</li>)
}
return <nav>
<ol>
{lis}
</ol>
</nav>
}
위와 같이 작성.
이때 event.target.id에서
target은 event를 발생시킨 태그(여기서는 a 태그)를 가리킨다.
따라서 각 a 태그의 id를 alert 동작하게 된다.
'생활코딩 독학 > WEB2 - JS React' 카테고리의 다른 글
React #7 Create, <form> 태그 (0) | 2023.01.10 |
---|---|
React #6 state (0) | 2023.01.10 |
React #4 props (0) | 2023.01.10 |
React #3 사용자 정의 태그 만들기. (0) | 2023.01.10 |
React #2 Source 코드 수정, 배포 (0) | 2023.01.10 |