ルーティングを使用して React のビューを変更するときに問題があります。ユーザーのリストのみを表示し、各ユーザーをクリックすると詳細ページに移動するようにしたいです。ルーターは次のとおりです。
import React from "react";
import ReactDOM from "react-dom";
import { BrowserRouter } from 'react-router-dom';
import Users from "./components/Users";
import { Router, Route } from "react-router";
import Details from "./components/Details";
ReactDOM.render((
<BrowserRouter>
<div>
<Route path="/" component={Users} />
<Route path="/details" component={Details} />
</div>
</BrowserRouter>
), document.getElementById('app'))
URL /details を使用すると、ブラウザはその URL に移動しますが、ビューは変更されません。他のルートでは 404 がスローされるため、ルートは認識されているものの、更新されていないようです。
ベストアンサー1
exact
indexRouteの属性を指定する必要があります。そうしないと、even/details
ルートでも と一致します。また、から/
インポートしてみてください。Route
react-router-dom
import React from "react";
import ReactDOM from "react-dom";
import { BrowserRouter, Route } from 'react-router-dom';
import Users from "./components/Users";
import Details from "./components/Details";
ReactDOM.render((
<BrowserRouter>
<div>
<Route exact path="/" component={Users} />
<Route path="/details" component={Details} />
</div>
</BrowserRouter>
), document.getElementById('app'))
アップデート:
他に必要なことは、コンポーネントのユーザーを にアタッチすることです。コンポーネントが を受信していない場合にのみwithRouter
を使用する必要があります。withRouter
Router props
これは、コンポーネントがルータによってレンダリングされたコンポーネントのネストされた子またはRouterプロパティを渡していないまたは、コンポーネントがルーターにまったくリンクされておらず、ルートとは別のコンポーネントとしてレンダリングされる場合。
Users.jsに以下を追加
import {withRouter} from 'react-router';
.........
export default withRouter(Users)