컴포넌트안에 정의한 state는 해당 컴포넌트에서만 사용이 가능하다.
자식 컴포넌트에서 부모 컴포넌트의 값이 필요할 때 props를 사용하여 값을 전달할 수 있다.
import { useState } from "react"
}
return (
<div>
<div>
{Show()}
</div>
<div>
<SubTitle list={list} clickSub={clickSub}></SubTitle>
</div>
</div>
)
}
function SubTitle(props){
return (
<dvi>
<h2>제목 : {props.list[props.clickSub]}</h2>
</dvi>
)
}
export default Title
import { useState } from "react"
function InputText(){
let [input, setInput] = useState()
return (
<>
<div>
입력값 : {input}
</div>
<input type="text" onChange={(e)=> {
setInput(e.target.value)
}} />
</>
)
}
export default InputText

(App.js)
import Header from './component/header';
function App() {
return (
<div className="App">
<Header></Header>
</div>
);
}
export default App;
(Header.js)
function Header(){
return (
<div>
Header
</div>
)
}
export default Header
또는
(Header.js)
export default Header(){
return (
<div>
Header
</div>
)
}
Routing이란 사용자가 요청한 URL에 맞는 페이지를 보여주는 것
npm install react-router-dom
yarn add react-router-dom
<Route> 태그에서 : 문자를 같이 사용하면 url에 입력한 값을 컴포넌트에서 useParams를 사용하여 얻어올 수 있다.해당 URL 파라미터를 얻어와 컴포넌트 적용
(App.js)
import {Routes, Route} from 'react-router-dom'
import Detail from './component/detail';
import New from './component/New';
import Home from './component/Home';
function App() {
return (
<div className="App">
<Routes>
<Route exact path='/' element={<Home/>}/>
<Route path='/detail' element={<Detail/>}/>
<Route path='/New/:id' element={<New/>}/>
</Routes>
</div>
);
}
export default App;
/detail/주소 뒤에 입력한 값을 id라는 이름의 파라미터로 New컴포넌트에 전달한다.
/New/:id를 통해 id를 useParams로 id값을 불러올 수 있다.
import React from "react";
import { useParams } from 'react-router-dom';
function New(){
let {id} = useParams()
return(
<div>
<h2>현재 New페이지의 파라미터는 {id} 입니다</h2>
</div>
)
}
export default New;

Routes는 Switch가 네이밍이 변경됐다.
exact는 v6 버전이후로 사용 안해도 된다.(중첩 라우팅element={<Home/>}을 통해 쉽게 개선됨)
<a>태그와 유사하다. href 대신 a를 통해서 해당위치로 url을 이동하게 된다.
import { Link } from 'react-router-dom';
function Home(){
return(
<>
<div>
메인 홈 페이지
</div>
<div>
<Link to="/detail">디테일 페이지 가기</Link>
</div>
</>
)
}
export default Home;
a 태그 : 외부 프로젝트로 이동하는 경우
Link : 프로젝트 내에서 페이지 전환하는 경우
import { useNavigate } from "react-router-dom";
function Login(){
const navigate = useNavigate();
const goToMain = ()=> {
navigate('/Home')
}
return(
<>
<button onClick={goToMain}>로그인</button>
</>
)
}
export default Login;
Link : 클릭 시 바로 이동하는 로직 구현 시에 사용
ex) 메인 화면에서 상품 페이지 이동 시
useNavigate : 페이지 전환 시 추가로 처리해야 하는 로직이 있을 경우
ex) 회원가입 되어 있는 사용자 => Main Page
회원가입이 되어있지 않은 사용자 => SignUp Page