Skip to content

Commit 702f901

Browse files
javoskiyyx990803
authored andcommitted
make a copy when query param value is an array (fix #1182) (#1291)
* make a copy when query param value is an array * fix param type
1 parent 563b74e commit 702f901

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

Diff for: src/util/query.js

+11-14
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,18 @@ export function resolveQuery (
1919
query: ?string,
2020
extraQuery: Dictionary<string> = {}
2121
): Dictionary<string> {
22-
if (query) {
23-
let parsedQuery
24-
try {
25-
parsedQuery = parseQuery(query)
26-
} catch (e) {
27-
process.env.NODE_ENV !== 'production' && warn(false, e.message)
28-
parsedQuery = {}
29-
}
30-
for (const key in extraQuery) {
31-
parsedQuery[key] = extraQuery[key]
32-
}
33-
return parsedQuery
34-
} else {
35-
return extraQuery
22+
let parsedQuery
23+
try {
24+
parsedQuery = parseQuery(query || '')
25+
} catch (e) {
26+
process.env.NODE_ENV !== 'production' && warn(false, e.message)
27+
parsedQuery = {}
28+
}
29+
for (const key in extraQuery) {
30+
const val = extraQuery[key]
31+
parsedQuery[key] = Array.isArray(val) ? val.slice() : val
3632
}
33+
return parsedQuery
3734
}
3835

3936
function parseQuery (query: string): Dictionary<string> {

Diff for: test/unit/specs/query.spec.js

+9
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,15 @@ describe('Query utils', () => {
99
baz: 'qux'
1010
}))
1111
})
12+
13+
it('should make a copy when param value is an array', () => {
14+
const arr = ['bar']
15+
const query = resolveQuery('', { foo: arr })
16+
arr.push('baz')
17+
expect(JSON.stringify(query)).toBe(JSON.stringify({
18+
foo: ['bar']
19+
}))
20+
})
1221
})
1322

1423
describe('stringifyQuery', () => {

0 commit comments

Comments
 (0)