2021.06.27 - [WEB/REACT] - [REACT] 라우팅/ 페이지 이동
이어지는 내용
올바르지 않은 주소를 치고 들어갔을때
올바르지 않은 주소라고 뜨고 뒤로가기 버튼을 만들어보자!
(1) 올바르지 않은 페이지를 만들어준다.
(2) App.js에서 react-router-dom에 있는 Switch를 import해준다
(3) Route부분을 Switch로 감싸준다.
(4) NotFound를 부르는데 뒤로가기를 하려면 그 전의 history를 넘겨주어야하기 때문에
Route할때 history를 넘겨준다.
NotFound.js
1
2
3
4
5
6
7
8
9
10
11
12
|
import React from "react";
const NotFound = (props) => {
return (
<div>
<h1>주소가 올바르지 않아요!</h1>
<button onClick={() => {props.history.goBack();}}>뒤로가기</button>
</div>
);
};
export default NotFound;
|
cs |
App.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
import React from "react";
import { withRouter } from "react-router";
import { Route, Switch } from "react-router-dom";
import BucketList from "./BucketList";
import styled from "styled-components";
import Detail from "./Detail";
import NotFound from "./NotFound";
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
list: ["영화관 가기", "매일 책읽기", "수영 배우기"],
};
this.text = React.createRef();
}
componentDidMount() {
console.log(this.text);
}
addBucketList = () => {
let list = this.state.list;
const new_item = this.text.current.value;
this.setState({ list: [...list, new_item] });
};
render() {
return (
<div className="App">
<Container>
<Title>내 버킷리스트</Title>
<Line />
<Switch>
<Route
path="/"
exact
render={(props) => <BucketList list={this.state.list} history={this.props.history}/>}
/>
<Route path="/detail" component={Detail}/>
<Route render={(props) => (
<NotFound
history={this.props.history}
/>
)}/>
</Switch>
</Container>
<Input>
<input type="text" ref={this.text} />
<button onClick={this.addBucketList}>추가하기</button>
</Input>
</div>
);
}
}
const Input = styled.div`
max-width: 350px;
min-height: 10vh;
background-color: #fff;
padding: 16px;
margin: 20px auto;
border-radius: 5px;
border: 1px solid #ddd;
`;
const Container = styled.div`
max-width: 350px;
min-height: 60vh;
background-color: #fff;
padding: 16px;
margin: 20px auto;
border-radius: 5px;
border: 1px solid #ddd;
`;
const Title = styled.h1`
color: slateblue;
text-align: center;
`;
const Line = styled.hr`
margin: 16px 0px;
border: 1px dotted #ddd;
`;
// withRouter 적용
export default withRouter(App);
|
cs |
출처: 스파르타 코딩 클럽
728x90
'WEB > REACT' 카테고리의 다른 글
[REACT] 덕스구조/ 리덕스 만들고 스토어 연결 , 컴포넌트에 연결하여 사용/ 버킷리스트 추가, 삭제하기 기능 (0) | 2021.06.28 |
---|---|
[REACT] 리덕스란? 개념, 용어, 상태관리 흐름도, 특징 3가지 (0) | 2021.06.28 |
[REACT] 라우팅/ 페이지 이동 (0) | 2021.06.27 |
[REACT] 이미지 좌우 스와이프 퀴즈 페이지 만들기 (0) | 2021.06.27 |
[REACT] 이벤트 리스너 등록 / mouseover이벤트 (0) | 2021.06.27 |