NavLink onActive 回调
NavLink onActive callback
有没有办法知道 NavLink
何时激活?是这样的吗?:
<NavLink to="/mylink" activeClassName="active" onActive={this.doSomething} />
您可以使用 NavLink
的 isActive
回调来实现此目的。 isActive
允许您在 link 激活时定义自己的行为;它获取 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>
);
}
有没有办法知道 NavLink
何时激活?是这样的吗?:
<NavLink to="/mylink" activeClassName="active" onActive={this.doSomething} />
您可以使用 NavLink
的 isActive
回调来实现此目的。 isActive
允许您在 link 激活时定义自己的行为;它获取 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>
);
}