outer
10436 ワード
React Router
反応器は単一ページアプリケーション(SPA)構造を用いるためindexである.htmlは1つしか存在せず、パスに従ってページ切り替えが必要です.
Routing
ルーティング(Routing)は、異なるパス(url)に基づいて異なるビューを表示します.応答自体に機能がないため、最大
React-router
が使用されます.React Router
最も人気のあるルーティングソリューション
react-router
の構成npm install react-router-dom --save
実施import React from 'react';
import {
BrowserRouter as Router,
Switch,
Route,
} from 'react-router-dom';
import Login from './pages/Login/Login';
import Signup from './pages/Signup/Signup';
import Main from './pages/Main/Main';
class Routes extends React.Component {
render() {
return (
<Router>
<Switch>
<Route exact path="/" component={Login} />
<Route exact path="/signup" component={Signup}/>
<Route exact path="/main" component={Main} />
</Switch>
</Router>
)
}
}
export default Routes;
ReactDOM.render(<Routes />, document.getElementById('root'));
ルーティングの移動
ルーティングにはリンクとwithRouterHOCの2つの方法があります.
react
は、外部ページにジャンプする際に<a>
タグを使用し、項目内でページ切り替えを行う場合に<Link>
を使用する.import React from 'react';
import { Link } from 'react-router-dom';
class Login extends React.Component {
render() {
return (
<div>
<Link to="/signup">회원가입</Link>
</div>
)
}
}
export default Login;
ページ切り替え時に、さらに処理する必要があるロジックがある場合は、このロジックを使用します.
使用する場合
ユーザ情報は
ケース1:登録したメンバーを移動するユーザー->Mainページ
Case 2:非会員ユーザーに移動->Signupページ
import React from 'react';
import { withRouter } from 'react-router-dom';
class Login extends React.Component {
goToMain = () => {
this.props.history.push('/main');
}
// 실제 활용 예시
// goToMain = () => {
// if(response.message === "valid user"){
// this.props.history.push('/main');
// } else {
// alert("너 우리 회원 아님. 가입 먼저 해주세요")
// this.props.history.push('/signup');
// }
// }
render() {
return (
<div>
<button
className="loginBtn"
onClick={this.goToMain}
>
로그인
</button>
</div>
)
}
}
export default withRouter(Login);
Reference
この問題について(outer), 我々は、より多くの情報をここで見つけました https://velog.io/@kdh24/React-React-Routerテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol