{/* fetch를 통한 실행 방식 */}
const fetchPost = async()=>{
console.log("App의 fetchPost");
const response = await fetch("http://localhost:8080/Spring15/user/getUser",{
method : 'post',
headers : {
"Content-Type" : "application/json"
},
body : JSON.stringify({
userId:'user01',
name:'홍길동',
age:200
})
});
const data = await response.json();
}
{/* axios를 통한 실행 방식 */}
const axiosGet = async ()=>{
console.log("App의 axiosGet()");
axios.get("http://localhost:8080/Spring15/user/getUser?name=홍길동&age=11")
.then((response)=>{
console.log(response);
})
}
{/* jQuery를 통한 실행 방식 */}
const jQueryGet = async ()=> {
$.ajax(
{
url:"http://localhost:8080/Spring15/user/getUser?name=홍길동&age=11",
method:"GET",
dataType:"text",
success : function(serverData, status) {
var JSONData = $.parseJSON(serverData);
console.log(JSONData);
}
}
)
}
단일 페이지로 Application을 구성하는것을 말한다.
단일페이지로 Application을 구성하다보니 하나의 페이지 안에서 원하는 component로 Navigate하는 과정이 필요한데 이때 사용하는 기술이 Router이다.
를 통해 URL이 path 조건을 충족하면 해당 component를 불러온다. exact{true} attribute를 추가하지 않는다면
다른 path조건에 자신의 URL이 조금이라도 일치한다면 해당 component를 불러온다.
를 통해 모든 path를 충족하지 않았을때 지정된 componenet를 불러오게 할 수 있다.
function App() {
console.log("App");
return (
<div className="ViewGood">
<h1>01 React Router Dom</h1>
<h3>a Tag 사용 페이지 전환</h3>
<a href="/">Component01</a>
<a href="/component02">Component02</a>
<a href="/component03">Component03</a>
<br/>
<h3>Link component 사용 페이지 전환</h3>
<Link to="/">Component01</Link>
<Link to="/component02">Component02</Link>
<Link to="/component03">Component03</Link>
{/* <Route path="/" exact={false}><Component01/></Route>
<Route path="/component02"><Component02/></Route>
<Route path="/component03"><Component03/></Route> */}
<Switch>
<Route path="/" exact={true}><Component01/></Route>
<Route path="/component02"><Component02/></Route>
<Route path="/component03"><Component03/></Route>
<Route path="*"><NotFound/></Route>
</Switch>
</div>
);
}
{/* 도메인 영역별로 세부 URL을 처리할 component로 보내기 */}
function App() {
console.log("App");
return (
<div className="ViewGood">
<CommonTop/>
<Switch>
<Route path="/" exact={true}><Main/></Route>
<Route path="/user" ><User/></Route>
<Route path="/product" ><Product/></Route>
<Route path="*" ><NotFound/></Route>
</Switch>
</div>
);
}
{/* Product 도메인 안 세부적인 URL을 처리 할 component */}
const Product = () => {
console.log("Product");
let{path, url} = useRouteMatch();
console.log(path);
console.log(url);
return (
<div className='ViewGood'>
<Link to="/product/product01">Product01</Link>
<Link to={url+"/product02"}>Product02</Link>
<Link to={url+"/product03"}>Product03</Link>
<Switch>
<Route path={path+"/product01"}><Product01/></Route>
<Route path="/product/product02"><Product02/></Route>
<Route path={path+"/product03"}><Product03/></Route>
<Route path={path+"/*"}><NotFound/></Route>
</Switch>
</div>
);
};
const Purchase = () => {
console.log("Purchase");
let{path, url} = useRouteMatch();
console.log(path);
console.log(url);
return (
<div className='ViewGood'>
<Link to="/purchase/purchase01/TV/1000">purchase01</Link>
<Link to={url+"/purchase02"}>purchase02</Link>
<Link to="/Purchase/Purchase03?purchaseName=TV&price=1000">purchase03</Link>
<Switch>
{/* Path Variable은 아래와 같이 data를 전달 할 수 있다.*/}
<Route path="/Purchase/Purchase01/:purchaseName/:price"><Purchase01/></Route>
<Route path="/purchase/purchase02"><Purchase02/></Route>
<Route path={path+"/purchase03"}><Purchase03/></Route>
<Route path={path+"/*"}><NotFound/></Route>
</Switch>
</div>
);
};
const Purchase01 = () => {
console.log("Purchase01")
let{purchaseName, price} = useParams();
console.log(purchaseName, price);
let params = useParams();
console.log(params);
return (
<div className="ViewGood">
<h2>Purchase01</h2>
Product01...
<br/><br/>
구매상품 : {purchaseName}
<br/>
구매상품 : {params.purchaseName}
<br/><br/>
구매가격 : {price}
<br/>
구매가격 : {params.price}
</div>
);
};
const Purchase03 = () => {
console.log("Purchase03")
const {search} = useLocation();
console.log(search);
const abc = new URLSearchParams(search);
console.log(abc.get("purchaseName"));
console.log(abc.get("price"));
return (
<div className="ViewGood">
<h2>Purchase03</h2>
Purchase03...
<br/><br/>
구매상품:{abc.get("purchaseName")};
<br/><br/>
구매가격:{abc.get("price")};
</div>
);
};