Javascript (React + Flow) - 使用可为空的嵌套对象进行解构

Javascript (React + Flow) - Destructuring with nullable nested objects

我正在尝试破坏一个暂时可以为 null 的对象。 例如:

const { dolphin } = this.props.route.params;

我想要 dolphin 到 return null if route or paramsnull.

但无论我尝试什么,我总是遇到异常“无法读取未定义的 属性 'dolphin'。

任何人都可以作为提示吗? 谢谢

最接近单行解构赋值的是:

const { dolphin } = this.props.route?.params || { dolphin: null };

但它不会 return null 仅当 .route.paramsnull 时;如果它们是任何虚假值,它就会这样做。

使用nullish coalesce, optional chaining, and default value:

function test(x) {
  this.props = x;
  const { dolphin = null, whale = null } = this.props.route?.params ?? {};
  return { dolphin, whale };
}

console.log(test({
  route: {
    params: null
  }
}))

console.log(test({
  route: null
}))


console.log(test({
  route: { params: { dolphin: 1, whale: 2 } }
}))

请务必在底部注明浏览器的兼容性 table。如果你使用的是 babel,你应该没问题。由于您正在使用 React 和 Flow,您可能已经在使用 Babel 的浏览器目标转译,所以这应该不是问题。