javascript - JS 对象解构以访问属性以进行评估而不实例化变量

标签 javascript reactjs eslint

我正在改进我的 React js代码,使用ESLinteslint-config-airbnb ,我收到以下类型的错误:

我可以通过使用 JS 来克服这些错误 Object destructuring并在必要时声明其他变量。

在以下代码片段中,我使用对象解构来填充 cat 变量。但是,如果我想执行一个“if”语句,有条件地针对对象解构输出,我无法在不执行两步过程的情况下执行此操作,其中:

  1. 声明变量以通过对象解构来填充它
  2. 在我的“if”语句中使用该变量。

有没有办法做到这一点而不必声明这个“临时”变量,但仍然通过对象解构访问内部对象属性以在例如“if”语句中使用。

我在下面尝试了注释代码,但它没有编译。

const animals = {
    cat: "brown",
    dog: "white"
};
let cat;
({
    cat
} = animals);

console.log(cat);

if (cat === "brown") {
    console.log("The cat is brown");
};

// Now,  the same "if" statement, but this time I replace the variable called "cat" with lines 6 to 8 above
/*
  if (({
          cat
      } = animals) === "brown")) {
      console.log("The cat is brown");
  };
*/

这是有错误的实际代码,我只是构建上面的示例以关注 js 语法:

 aTest() {
     if (this.state.shouldToggle === true) {
       this.setState({ activeTabKey: 'hello' })
     } else {
       clearInterval(this.state.timerId)
     }
   }

this.state.shouldToggle - 带有红色下划线和错误“[eslint] 必须使用解构状态赋值 (react/destructuring-assignment)”

enter image description here

最佳答案

对我来说,ESLint 提示没有在那里使用解构是非常奇怪的。但显然是这样,这意味着您的选择是:

  1. 如果您不喜欢它的要求,请禁用该规则。 (如果它真的需要在该代码中使用解构——而且我没有理由怀疑你的屏幕截图——这条规则对来说似乎有点愚蠢,但这既不在这里也不在那里。)

  2. 由于它要求您使用解构,在该示例中它要求您使用解构赋值(因为您没有要解构的参数),这意味着您必须要分配一些东西,这意味着创建不必要的变量/常数:

    aTest() {
      const {shouldToggle, timerId} = this.state;
      if (shouldToggle === true) {
        this.setState({ activeTabKey: 'hello' })
      } else {
        clearInterval(timerId)
      }
    }
    

    这可以防止重复 this.state,但会让您重复 shouldToggletimerId,这似乎不是一个有用的交易-关闭(再次,对,但我的意见在这里并不重要,你的才是)。

关于javascript - JS 对象解构以访问属性以进行评估而不实例化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52493286/

相关文章:

javascript - 通过任意数量的参数设置对象的嵌套键/值

javascript - 从react-native获取文件上传图像,与 `<input type="file"onChange={this.fileChangedHandler}> `

javascript - 调用 karma 测试时未定义 Angular 错误

javascript - 当我创建高阶组件时,我应该如何处理 "think"?

reactjs - pusher .bind 方法中的过时 react 状态

javascript - 忽略 git 预提交期间的 eslint 错误

javascript - 如何在开发中自动删除 console.logs()?

javascript - 如何在 acrobat PDF 中使用 javascript 创建嵌套 OCG/图层并将其附加到父级?

javascript - ESLint:可能的竞争条件: `user.registered` 可能会根据过时的值 `user.registered` 重新分配。 (需要原子更新)

javascript - :after pseudo class not working when using in stylesheet and importing in react