SPA(Single Page Application): 서버에 주는 html 파일이 1개다. (React가 대표적인 예)
SPA 사용이유?
단점은 없나?
라우팅이란?
라우팅을 통해서 화면전환하기
import React from "react";
import {render} from "react-dom";
import {Route} from "react-router-dom;
import Dog from "./Dog";
import Cat from "./Cat";
import Home from "./Home"
class App extends React.Component{
constructor(props){
super(props);
this.state = {};
}
render(){
return (<div className = "App">
<Route exact path = "/" component = {Home}>
<Route path = "/cat" component = {Cat}>
<Route path = "/Dog" component = {Dog}>
</div>
);
URL 파라미터 사용하기
import React from "react";
import {render} from "react-dom";
import {Route} from "react-router-dom;
import Dog from "./Dog";
import Cat from "./Cat";
import Home from "./Home"
class App extends React.Component{
constructor(props){
super(props);
this.state = {};
}
render(){
return (<div className = "App">
<Route exact path = "/" component = {Home}></Route>
<Route path = "/Cat:cat_name" component = {Cat}></Route>
<Route path = "/Dog" component = {Dog}></Route>
</div>
);
import React from "react";
const Cat = (props) => {
return(<div>내 고양이 이름은 {props.match.params.cat_name}입니다.</div>)
export default Cat;
History 사용하기
import {withRouter} from "react-router";
class App extends React.Component { //constructor, state, render부분은 생략하겠다.
<button onClick = {() => {this.props.history.push('/cat/nabi');}}></button>
<button onClick = {() => {this.props.history.goBack()}}</button>
export default withRouter(App);
라우팅, 조금 더 꼼꼼히 쓰려면?
yarn add redux react-redux
리덕스는 데이터를 한군데에 몰아넣고, 여기저기에서 꺼내볼 수 있게 도와주는 친구.
State: 리덕스에서 저장하고 있는 상태값(data)을 의미한다. 딕셔너리 형태{[key]:value}를 지니고 있다.
Action: 상태에 변화가 필요할 때 발생하는 친구.
{type: 'CHANGE_STATE', data: {...}}
ActionCreator: 액션 생성함수이다. 액션을 만들기 위해 쓰이는 함수.
Reducer: 리덕스에 저장되어있는 데이터를 변경하는 함수.
Store: 프로젝트에 리덕스를 적용하기 위해 쓰이는 것
스토어에서는 리듀서, 현재 어플리케이션 상태, 리덕스에서 값을 가져오고 액션을 호출하기 위한 몇가지 내장함수가 포함되어 있다.
Dispatch: 액션을 발생시키는 역할을한다 (정말 많이 쓰인다)
Redux를 만드는 STEP:
컴포넌트에서 리덕스 데이터 사용하는 방법
클래스 형 컴포넌트