fix(router): IE 11 bug can break URL unification when comparing objects (#30393)

This PR fixes an issue where IE 11 can return `undefined` in with an `Object.keys` call. Solution is to add a runtime check on the value. Based on the types being passed, this shouldn't be necessary, but is needed only for IE 11. Unit test doesn't work for this PR because it can't be replicated easily.

PR Close #30393
This commit is contained in:
Jason Aden 2019-05-10 08:49:17 -07:00 committed by Alex Rickabaugh
parent 18c0ba5272
commit 197584d1af
1 changed files with 2 additions and 1 deletions

View File

@ -23,7 +23,8 @@ export function shallowEqualArrays(a: any[], b: any[]): boolean {
export function shallowEqual(a: {[x: string]: any}, b: {[x: string]: any}): boolean {
const k1 = Object.keys(a);
const k2 = Object.keys(b);
if (k1.length != k2.length) {
// IE 11 sometimes returns an `undefined` value here. This guard is for IE 11 only.
if (!(k1 || k2) || k1.length != k2.length) {
return false;
}
let key: string;