React Routerを使用してステータス遷移をクリア
18971 ワード
Reactを使用すると、ページ間でデータ交換が必要な場合があります.そのたびに忘れてしまいますが、以前書いたコードで検索して、ブログで整理してアップロードする必要があるような気がします.
プリファレンス リンクNavLinkコンポーネント を使用withRouter HoC,
クラスコンポーネント Functional Component
ルーティング
//App.js
import React, { Component } from 'react';
import { Switch, Route } from 'react-router-dom';
import MainPage from '../src/pages/main';
import Page1 from '../src/pages/page1';
import Page2 from '../src/pages/page2';
class App extends Component {
render() {
return (
<div className="App">
<Switch>
<Route exact path="/" render={() => <MainPage />} />
<Route exact path="/page1" render={() => <Page1 />} />
<Route exact path="/page2" render={() => <Page2 />} />
</Switch>
</div>
);
}
}
export default App;
//MainPage.js
import React from 'react';
import { Link, NavLink } from 'react-router-dom';
function MainPage() {
const activeStyle = {
'스타일 설정'
};
return (
<div>
<button>
<Link to="/page1">
Page1
</Link>
</button>
<button>
<NavLink exact to="/page2" activeStyle={activeStyle}>
Page2
</NavLink>
</button>
</div>
);
}
export default MainPage;
リンクとNavLinkの違いURLの有効化時にスタイルを適用するかどうかimport React from 'react';
import { withRouter } from 'react-router-dom';
function Page1() {
return(
<button onClick={() =>
this.props.history.push({
pathname : "/",
})
}>
Main Page로 이동
</button>
);
}
export default withRouter(Page1)
historyオブジェクトのpushメソッドを使用して移動します.じょうたいでんそう
//state를 보내는 Component
import React, { Component } from 'react';
import { withRouter } from 'react-router-dom';
class GiveComponent extends Component {
return(
<button onClick={() =>
this.props.history.push({
pathname : "보낼 페이지 주소",
state : {
data : 'This is data'
},
})
}>
전송
</button>
);
}
export default withRouter(GiveComponent);
//state를 받는 Component
import React, { Component } from 'react';
import { withRouter } from 'react-router-dom';
class TakeComponent extends Component {
const data = this.props.location.state.data;
return(
<p>{data}</p>
);
}
export default withRouter(TakeComponent);
//state를 보내는 Component
import React from 'react';
import { useHistory } from 'react-router-dom';
function GiveComponent() {
const history = useHistory();
return(
<button onClick={() =>
history.push({
pathname : "보낼 페이지 주소",
state : {
data : 'This is data'
},
})
}>
전송
</button>
);
}
export default GiveComponent;
//state를 받는 Component
import React from 'react';
import { useLocation } from 'react-router-dom';
function TakeComponent() {
const data = useLocation().state.data;
return(
<p>{data}</p>
);
}
export default TakeComponent;
クラスコンポーネントはwithRouterHoc、関数コンポーネントはwithRouterを使用できますが、useHistory、useLocation hookを使用してstateを送信できます.Reference
この問題について(React Routerを使用してステータス遷移をクリア), 我々は、より多くの情報をここで見つけました https://velog.io/@jungyh0528/React-Router-사용-및-State-전송-정리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol