React Routerでパラメータを渡す方法
はじめに
React Routerでパラメータを渡す方法をメモします。
以下の2パターンの方法を試しました。
①http://localhost/hoge?year=2019&month=3
②http://localhost/hoge/year/2019/month/3
パターン①
const changePage = () => (dispatch) => {
dispatch(push({
pathname: '/hoge',
search: "?" + new URLSearchParams({ year: 2019, month: 3 }),
state: { value: 'something value' }
}));
};
渡したパラメータは遷移先でpropsから取得できます。
import React, { Component } from 'react';
import { connect } from 'react-redux';
class Child extends Component {
render() {
const { pathname, search, state } = this.props;
}
}
const mapStateToProps = state => ({
pathname: state.router.location.pathname,
search: state.router.location.search,
state: state.router.location.state
});
export default connect(mapStateToProps)(Child);
パターン②
React Routerで以下のように設定をしておきます。
<Route exact path="/hoge/year/:year/month/:month" component={Hoge} />
export const changePage = () => (dispatch) => {
dispatch(push({
pathname: '/hoge/year/2019/month/3/'
}));
};
React Routerで:yearみたいなRoute Paramsした箇所は、遷移先でprops.match.paramsから取得できます。
class Hoge extends Component {
render() {
const { year, month } = this.props.match.params;
console.log(year); // 2019
console.log(month); // 3
}
}
ディスカッション
コメント一覧
まだ、コメントがありません