Skip to content

Commit 8ba68b6

Browse files
caikanyyx990803
authored andcommitted
add router-link prop: exact-active-class & router option: linkExactActiveClass (#1361)
1 parent d17a4b1 commit 8ba68b6

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

src/components/link.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export default {
2222
append: Boolean,
2323
replace: Boolean,
2424
activeClass: String,
25+
exactActiveClass: String,
2526
event: {
2627
type: eventTypes,
2728
default: 'click'
@@ -34,19 +35,27 @@ export default {
3435

3536
const classes = {}
3637
const globalActiveClass = router.options.linkActiveClass
38+
const globalExactActiveClass = router.options.linkExactActiveClass
3739
// Support global empty active class
3840
const activeClassFallback = globalActiveClass == null
3941
? 'router-link-active'
4042
: globalActiveClass
43+
const exactActiveClassFallback = globalExactActiveClass == null
44+
? 'router-link-exact-active'
45+
: globalExactActiveClass
4146
const activeClass = this.activeClass == null
4247
? activeClassFallback
4348
: this.activeClass
49+
const exactActiveClass = this.exactActiveClass == null
50+
? exactActiveClassFallback
51+
: this.exactActiveClass
4452
const compareTarget = location.path
4553
? createRoute(null, location, null, router)
4654
: route
4755

56+
classes[exactActiveClass] = isSameRoute(current, compareTarget)
4857
classes[activeClass] = this.exact
49-
? isSameRoute(current, compareTarget)
58+
? classes[exactActiveClass]
5059
: isIncludedRoute(current, compareTarget)
5160

5261
const handler = e => {

0 commit comments

Comments
 (0)