fix(UrlSearchParams): change a behavior when a param value is null or undefined (#11990)
This commit is contained in:
parent
c143fee849
commit
bf7b82b658
|
@ -102,6 +102,10 @@ export class URLSearchParams {
|
|||
getAll(param: string): string[] { return this.paramsMap.get(param) || []; }
|
||||
|
||||
set(param: string, val: string) {
|
||||
if (val === void 0 || val === null) {
|
||||
this.delete(param);
|
||||
return;
|
||||
}
|
||||
const list = this.paramsMap.get(param) || [];
|
||||
list.length = 0;
|
||||
list.push(val);
|
||||
|
@ -124,6 +128,7 @@ export class URLSearchParams {
|
|||
}
|
||||
|
||||
append(param: string, val: string): void {
|
||||
if (val === void 0 || val === null) return;
|
||||
const list = this.paramsMap.get(param) || [];
|
||||
list.push(val);
|
||||
this.paramsMap.set(param, list);
|
||||
|
|
|
@ -149,5 +149,23 @@ export function main() {
|
|||
expect(paramsC.toString()).toEqual('a=2&q=4%2B&c=8');
|
||||
});
|
||||
|
||||
it('should remove the parameter when set to undefined or null', () => {
|
||||
const params = new URLSearchParams('q=Q');
|
||||
params.set('q', undefined);
|
||||
expect(params.has('q')).toBe(false);
|
||||
expect(params.toString()).toEqual('');
|
||||
params.set('q', null);
|
||||
expect(params.has('q')).toBe(false);
|
||||
expect(params.toString()).toEqual('');
|
||||
});
|
||||
|
||||
it('should ignore the value when append undefined or null', () => {
|
||||
const params = new URLSearchParams('q=Q');
|
||||
params.append('q', undefined);
|
||||
expect(params.toString()).toEqual('q=Q');
|
||||
params.append('q', null);
|
||||
expect(params.toString()).toEqual('q=Q');
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue