From 3b0e9d51008b64a51b64cea80f4b4326b3e9ad15 Mon Sep 17 00:00:00 2001 From: caikan Date: Sat, 22 Apr 2017 17:50:54 +0800 Subject: [PATCH] add router-link prop: `exact-active-class` & router option: `linkExactActiveClass` --- src/components/link.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/components/link.js b/src/components/link.js index da12eec7f..f4d0d194a 100644 --- a/src/components/link.js +++ b/src/components/link.js @@ -22,6 +22,7 @@ export default { append: Boolean, replace: Boolean, activeClass: String, + exactActiveClass: String, event: { type: eventTypes, default: 'click' @@ -34,19 +35,27 @@ export default { const classes = {} const globalActiveClass = router.options.linkActiveClass + const globalExactActiveClass = router.options.linkExactActiveClass // Support global empty active class const activeClassFallback = globalActiveClass == null ? 'router-link-active' : globalActiveClass + const exactActiveClassFallback = globalExactActiveClass == null + ? 'router-link-exact-active' + : globalExactActiveClass const activeClass = this.activeClass == null ? activeClassFallback : this.activeClass + const exactActiveClass = this.exactActiveClass == null + ? exactActiveClassFallback + : this.exactActiveClass const compareTarget = location.path ? createRoute(null, location, null, router) : route + classes[exactActiveClass] = isSameRoute(current, compareTarget) classes[activeClass] = this.exact - ? isSameRoute(current, compareTarget) + ? classes[exactActiveClass] : isIncludedRoute(current, compareTarget) const handler = e => {