NavLink onActive обратный вызов
Есть ли способ, чтобы знать, когда NavLink
является активный? что-то вроде этого?:
<NavLink to="/mylink" activeClassName="active" onActive={this.doSomething} />
1 ответ:
Вы можете использовать
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> ); }