25
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

history.push();でアクションを起こした時にページ遷移をする

Posted at

#概要
今回はhistory.push();を使ってページ遷移を行います。
ページ遷移といえば

<Link to="/">ホームへ</Link>

のようにしてクリックしたらホームへ行くみたいなものですが、今回はフォームを用意して文字を送信したらページ遷移をすることを目標にします。
#実装していく

npm install --save react-router-dom

必要なものとしてreact-router-domをインストールします。

次に準備としてヒストリーを作ります。

src/history.js
import history from 'history/createBrowserHistory';

export default history();

App.jsを見てみましょう。

src/App.js
import React from 'react';
import { Router, Route } from 'react-router-dom';

import history from '../history';
import PageOne from './PageOne';
import PageTwo from './PageTwo';

const App = () => {
  return (
    <div>
      <Router history={history}>
        <div>
          <Route path="/" exact component={PageOne} />
          <Route path="/action" exact component={PageTwo} />
        </div>
      </Router>
    </div>
  );
};

export default App;

コンポーネントとしてPageOneとPageTwoを持っておりそれぞれpathをつけています。
ポイントはRouterにhistoryを持たせています。
ここをBrowserRouterでラップしてしまうとエラーが出てしまうので気をつけてください。

PageOneはダミーのページなので置いておいて、PageTwoをみてみましょう。

src/components/PageTwo.js
import React from 'react';
import history from '../history';

class PageTwo extends React.Component {
  changePage = () => {
    history.push('/');
  }

  render() {
    return (
      <form onSubmit={this.changePage}>
        <input type="text" />
      </form>
    );
  }
};

export default PageTwo;

history.push()に飛ばしたいpathを入れてあげるとページ遷移してくれます。
ここでは送信するとPageOneコンポーネントに飛んでいます。
#まとめ
今回はhistory.push()についてみてみました。
参考になれば幸いです。

25
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?