onChangeMode 함수 전달하기
- Header 컴포넌트 안에서 링크를 클릭하면 컴포넌트가 함수를 호출해서 Header를 클릭했을 때 해야하는 작업들이 실행되게끔
- ex) alert('Header);

function App() {
return (
<div>
<Header title="WEB" onChangeMode={()=>{
alert('Header');
}}></Header>
<Nav topics={topics} onChangeMode={(id)=>{
alert(id);
}}></Nav>
<Article title="Welcome" body="Hello, WEB"></Article>
</div>
);
}
function Header(props){
console.log('props',props,props.title);
return <header>
<h1><a href="" onClick={(event)=>{
event.preventDefault();
props.onChangeMode();
}}>{props.title}</a></h1>
</header>
}
onClick의 함수 이벤트를 걸어준다.(리액트 개발환경이 브라저가 이해할 수 있는 html로 컨버팅해주기 때문에 기존의 문법과 다르다.)onClick={(event)=>{
event.preventDefault(); //page 리로드를 방지한다.
props.onChangeMode();
}

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" onChangeMode={()=>{
alert('Header');
}}></Header>
<Nav topics={topics} onChangeMode={(id)=>{
alert(id);
}}></Nav>
<Article title="Welcome" body="Hello, WEB"></Article>
</div>
);
}
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); // Nav의 onChangeMode함수 호출
}}>{t.title}</a></li>)
}
return <nav>
<ol>
{lis}
</ol>
</nav>
}
(event.target)(event.target)의 target은 이벤트를 유발시킨 태그=>a태그(event.target.id)