を使用して別のパスに移動できます
this.props.router.Push('/some/path')
ナビゲートするときにパラメータ(オブジェクト)を送信する方法はありますか?
私が考えることができる他のオプションがありますが、object
を渡すことがまったく可能かどうか疑問に思いますか?
オブジェクトのidを埋め込み、新しいページからサーバーからオブジェクトを再取得できます。
または、reduxストアなどのグローバルストレージにオブジェクトを保存できます。 (このオブジェクトはすぐにストアから削除する必要があります。そのため、そもそもそこに置くのは良くないかもしれないと考えています)
React Routerはlocation
オブジェクトを使用します。 location
オブジェクトのプロパティの1つはstate
です。
this.props.router.Push({
pathname: '/other-page',
state: {
id: 7,
color: 'green'
}
})
ナビゲート先のページでは、現在のlocation
がルートが一致したコンポーネントに挿入されるため、this.props.location.state
を使用して状態にアクセスできます。
ユーザーがページに直接移動する場合、state
がないため、データが存在しない場合でもデータをロードするための何らかのメカニズムが必要です。
React Router 4または5を使用している場合、現在の回答は古くなっています。history.Pushを呼び出して、状態を渡す2番目のパラメーターとしてオブジェクトを渡します。
props.history.Push('/other-page', { id: 7, color: 'green' }))
次に、「/ other-page」の状態データにアクセスできます:
props.location.state
react routerでプログラム的にナビゲーションするときにクエリパラメーターを渡す
履歴オブジェクトは、history.Pushとhistory.replaceの両方を使用して、プログラムで現在の場所を変更するために使用できます。
history.Push('/home?the=query', { some: 'state' })
履歴オブジェクトを小道具としてコンポーネントに渡す場合。その後、履歴オブジェクトで利用可能なリアクションルーターメソッドを使用して、プログラムでナビゲートできます。
ここで、「router」と呼ばれる小道具として履歴オブジェクトを渡すと仮定しましょう。したがって、次のようなクラスベースの構文でコンポーネント内で参照されます。
this.props.router
プッシュまたは置換を使用する場合、URLパスと状態の両方を個別の引数として指定するか、単一の場所のようなオブジェクトにすべてを最初の引数として含めることができます。
this.props.router.Push('/some/path?the=query')
または、単一の場所のようなオブジェクトを使用して、URLと状態の両方を指定できます。これは上記の例と同等です。
this.props.router.Push({
pathname: '/some/path', //path
search: '?the=query' // query param named 'search'
})
注-もちろん、this.props.routerが実際にreact-router apiからの履歴オブジェクトであることを確認してください。
クエリ文字列で送信する場合
this.props.router.Push({
pathname: '/payment-history',
query: {
email: rowData.email
}
})
反応ルーターv4 +でこれを機能させることができませんでした。しかし、以下は機能します:
//I.e. add navigate using the history stack and pass context as the 2nd parameter
this.props.history.Push('/takeTest', {
subjectsList: this.props.subjectsList.filter(f => f.isChecked === true)
})
使用しているバージョンはわかりませんが、react-router
のパラメーターとしてオブジェクトを指定できます。
let {router} = this.props;
router.Push({pathname: "/newpath", query: {id: 1}) // will create the url /newpath?id=1