提问者:小点点

是否可以在函数中使用道具作为默认值(当使用React/Destructuring-Assignment规则时)


我有一个函数,它获取val作为参数,我想将this.props.val设置为默认值。

我当前的职能:

foo(val = this.props.val) {
    this.bar(val);
  }

我将得到以下lint错误:

必须使用毁灭道具分配(反应/毁灭-分配)

是否有可能以不同的方式将道具作为默认值,以支持react/destructuring-assignment规则?

也许有类似以下的诀窍?

foo({ val } = this.props) {
    this.bar(val);
  }

[我可以用

foo(val) {
    const { val: valProps } = this.props;
    const newVal = val || valProps;
    this.bar(newVal);
  }

但我想找一个更干净的方法]


共2个答案

匿名用户

你是说类似这个的东西?

const foo = ({ val = 'MY_DEFAULT_VALUE' } = this.props) => {
  console.log(val);
}

foo({ val: 'x' })  // Prints 'x'
foo({})  // Prints 'MY_DEFAULT_VALUE'

匿名用户

您将得到一个lint错误,这并不是一个确切的错误,因为它与运行时无关,而只是与代码风格相关的一个固执己见的最佳实践。 对于JavaScript,您的代码似乎还不错。 您可以做的是,通过将此注释置于您的函数之上来忽略此特定行的规则,//eslint-disable-line react/destructing-assignment或者在完全取决于您的代码风格的eslint配置中完全禁用此规则。