对Eslint进行销毁分配

时间:2018-11-13 16:33:35

标签: javascript reactjs eslint

我正在使用eslint规则react/destructuring-assignment。我该如何破坏它?

getStuff(model = this.state.model) {
   // some stuff
}

3 个答案:

答案 0 :(得分:2)

ESLINT不允许使用this.state.model,它建议您使用解构:

const { model: stateModel } = this.state
getStuff(model = stateModel) {

但是,我担心它是在react类组件内部。因此,您不能在方法定义之前定义const或var。您应该为该行禁用eslint:

getStuff(model = this.state.model) { // eslint-disable-line

或者,您也可以这样使用:

 getStuff(model) {
   const { model: stateModel } = this.state
   const passedModel = model ? model : stateModel

   // then work through passedModel
}

嗯,我想这应该可以解决问题:

getStuff({state: {model}} = this) {

但是,坦率地说,我从未使用过这种方法。试着让我知道。

更新

您也可以这样使用:

getStuff(model) {
  const { model: stateModel } = this.state || { model: model }
  console.log(stateModel)

或者,简单地:

getStuff(model) {
  const { model } = this.state || { model }
  // ----------------- similar to { model: model }
  console.log(model)

答案 1 :(得分:1)

据我所知,您希望从状态获取模型的默认var,并在需要时也可以传递它。

getStuff(passedModel) {
   const { model } = this.state
   const toUseModelInMethod = passedModel || model
   // or 
   const toUseModelInMethod = passedModel ? passedModel : model
}

如果您只想从this.state中获取模型,那很简单

getStuff() {
   const { model } - this.state
}

您还可以将状态传递给方法

getStuff({ model }) {...}
this.getStuff(this.state) // linter is not happy
// that's is better
getStuff(model){...}
const { model } = this.state
this.getStuff(model)

答案 2 :(得分:0)

您的例子不是破坏性的。函数如下所示:

function getStuff({ property1, property2 }) {
...
}

上面的示例将从任何传递给给定函数的对象中拉出property1和property2。