React? -> 메타에서 개발한 오픈소스 자바스크립트 라이브러리
리액트의 본질: 사용자 정의 태그(컴포넌트) 만들기
컴포넌트 함수→ 반드시 대문자로 시작
컴포넌트 상태 변화→ useState
//컴포넌트 상태 변화
import {useState} from 'react';
function App() {
// const _mode=useState('WELCOME');
// const mode=_mode[0];
// const setMode = _mode[1];
//코드 간결하게 바꾸기 , mode는 원하는 변수 이름으로 가능
const [mode, setMode]= useState('WELCOME');
const [id, setId]= useState(null);
const [topics, setTopics]=useState([
{id:1, title:'html', body:'html is ...'},
{id:2, title:'css', body:'css is ...'},
{id:3, title:'javascript', body:'javascript is ...'}
]);
let content = null;
if(mode ==='WELCOME') {
content= <Article title="WELCOME" body="Hello, WEB"></Article>
} else if(mode === 'READ'){
let title, body = null;
for(let i=0; i<topics.length; i++){
console.log(topics[i].id, id);
if(topics[i].id===id){
title = topics[i].title;
body = topics[i].body;
}
}
content = <Article title={title} body={body}></Article>
}else if(mode==='CREATE'){
content = <Create onCreate={(title, body)=>{}}></Create>
}
return (
<div>
<Header title="REACT" onChangedMode={()=>{
setMode('WELCOME');
}}></Header>
<Nav topics={topics} onChangedMode={(_id)=>{
setMode('READ');
setId(_id);
}}></Nav>
{content}
<a href="/create" onClick={event=>{
event.preventDefault();
setMode('CREATE');
}}>Create</a>
</div>
);
}