首页 > 解决方案 > NavLink onActive 回调

问题描述

有没有办法知道什么时候NavLink激活?像这样的东西?:

<NavLink to="/mylink" activeClassName="active" onActive={this.doSomething} />

标签: reactjsreact-routerreact-router-dom

解决方案


您可以使用NavLink'isActive回调来实现这一点。isActive允许您在链接处于活动状态时定义自己的行为;它获取match和您当前的location对象。您可以修改它以获取一个回调,如果匹配为真,该回调将触发。这是一个简单的例子:

const isActive = onActive => (match, location) => {
  if (match) {
    onActive();
  }
  return match;
}

const App = () => {
  const onActive = () => console.log("link is active");
  return (
    <BrowserRouter>
      <div>
        <NavLink to="/abc" activeClassName="active" isActive={isActive(onActive)}>Go To ABC</NavLink>
        <Route path="/abc" render={() => <h1>ABC Page</h1>} />
      </div>
    </BrowserRouter>
  );
}

推荐阅读