1. ホーム
  2. javascript

[解決済み] React-Routerとアクティブリンク?

2022-12-08 15:10:07

質問

React-Router(v4)を試しているのですが、ナビを起動する際に、1つの Link のいずれかが active . のいずれかをクリックすると Link タグのいずれかをクリックすると、アクティブなものが動作し始めます。しかし、私は、ホーム Link でロードされるコンポーネントなので、アプリが起動したらすぐにアクティブになるようにしたいです。 / ルートでロードされるコンポーネントだからです。これを行う方法はありますか?

以下は私の現在のコードです。

const Router = () => (
  <BrowserRouter>
    <div>
      <Nav>
        <Link activeClassName='is-active' to='/'>Home</Link> {/* I want this to start off as active */}
        <Link activeClassName='is-active' to='/about'>About</Link>
      </Nav>

      <Match pattern='/' exactly component={Home} />
      <Match pattern='/about' exactly component={About} />
      <Miss component={NoMatch} />
    </div>
  </BrowserRouter>
)

どのように解決するのですか?

<Link> は、もはや activeClassName または activeStyle プロパティを使用します。react-router v4では <NavLink> を使う必要があります。

const Router = () => (
  <BrowserRouter>
    <div>
      <Nav>
        <NavLink exact={true} activeClassName='is-active' to='/'>Home</NavLink>
        <NavLink activeClassName='is-active' to='/about'>About</NavLink>
      </Nav>

      <Match pattern='/' exactly component={Home} />
      <Match pattern='/about' exactly component={About} />
      <Miss component={NoMatch} />
    </div>
  </BrowserRouter>
)

ホームに正確なプロパティを追加した <NavLink> を追加しました。 //about というように、他のページにもマッチします。