反应路由器-NavLink activeStyle或activeClassName不适用于嵌套路由

时间:2018-08-30 10:43:58

标签: reactjs react-router react-router-v4 react-router-dom

我正在使用react-router-dom。在我的代码中,NavLink无法应用activeStyleactiveClassName甚至在页面加载/重新加载时也无法应用。我已经嵌套了路由,但没有使用redux。

示例代码Stackblitz

react-router-dom版本:4.3.1

index.js

  render() {
    return (
      <div>
        <Router>
          <Hello>
            <Route path="/child-a" component={ChildA} />
            <Route path="/child-b" component={ChildB} />
          </Hello>
        </Router>
      </div>
    );
  }

hello.js:

  render() {
    return (
      <div>
        <h5>
          <NavLink
            to="child-a"
            activeStyle={{ color:'red' }}
            exact
          >child-a</NavLink>
        </h5>
        <h5>
          <NavLink
            to="child-b"
            activeStyle={{ color:'red' }}
            exact
          >child-b</NavLink>
        </h5>
        <div>
          <div><h2>Hello</h2></div>
          {this.props.children}
        </div>
      </div>
    );
  }

1 个答案:

答案 0 :(得分:1)

尝试在to属性前加上斜杠。

hello.js 更改为:

render() {
    return (
      <div>
        <h5>
          <NavLink
            to="/child-a"
            activeStyle={{ color:'red' }}
            exact
          >child-a</NavLink>
        </h5>
        <h5>
          <NavLink
            to="/child-b"
            activeStyle={{ color:'red' }}
            exact
          >child-b</NavLink>
        </h5>
        <div>
          <div><h2>Hello</h2></div>
          {this.props.children}
        </div>
      </div>
    );
  }

似乎为我工作!