Skip to content

Commit 465bc5e

Browse files
committed
added trailingSlash prop
1 parent 08e8bbe commit 465bc5e

File tree

3 files changed

+32
-16
lines changed

3 files changed

+32
-16
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,5 @@ npm-debug.log
1212

1313
# coverage
1414
coverage
15+
16+
.vscode

package-lock.json

+21-7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/index.js

+9-9
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,11 @@ class Routes {
5656
}, {query, parsedUrl})
5757
}
5858

59-
findAndGetUrls (nameOrUrl, params) {
59+
findAndGetUrls (nameOrUrl, params, trailingSlash) {
6060
const route = this.findByName(nameOrUrl)
6161

6262
if (route) {
63-
return {route, urls: route.getUrls(params), byName: true}
63+
return {route, urls: route.getUrls(params, trailingSlash), byName: true}
6464
} else {
6565
const {route, query} = this.match(nameOrUrl)
6666
const href = route ? route.getHref(query) : nameOrUrl
@@ -89,11 +89,11 @@ class Routes {
8989

9090
getLink (Link) {
9191
const LinkRoutes = props => {
92-
const {route, params, to, ...newProps} = props
92+
const {route, params, to, trailingSlash, ...newProps} = props
9393
const nameOrUrl = route || to
94-
94+
9595
if (nameOrUrl) {
96-
Object.assign(newProps, this.findAndGetUrls(nameOrUrl, params).urls)
96+
Object.assign(newProps, this.findAndGetUrls(nameOrUrl, params, trailingSlash).urls)
9797
}
9898

9999
return <Link {...newProps} />
@@ -148,12 +148,12 @@ class Route {
148148
return `${this.page}?${toQuerystring(params)}`
149149
}
150150

151-
getAs (params = {}) {
151+
getAs (params = {}, trailingSlash) {
152152
const as = this.toPath(params) || '/'
153153
const keys = Object.keys(params)
154154
const qsKeys = keys.filter(key => this.keyNames.indexOf(key) === -1)
155155

156-
if (!qsKeys.length) return as
156+
if (!qsKeys.length) return (!trailingSlash)?as: `${as}/`
157157

158158
const qsParams = qsKeys.reduce((qs, key) => Object.assign(qs, {
159159
[key]: params[key]
@@ -162,8 +162,8 @@ class Route {
162162
return `${as}?${toQuerystring(qsParams)}`
163163
}
164164

165-
getUrls (params) {
166-
const as = this.getAs(params)
165+
getUrls (params, trailingSlash) {
166+
const as = this.getAs(params, trailingSlash)
167167
const href = this.getHref(params)
168168
return {as, href}
169169
}

0 commit comments

Comments
 (0)