ESLint必须使用解构状态赋值

ros*_*mbo 23 reactjs eslint

在那里,我得到以下行的ESlint错误 this.state.items.map(item => (

错误是 Must use destructuring state assignment

{
            this.state.items.map(item => (
              <div key={item}>
                {
                item.links.map(thing => (
                  <NavLink
                    key={thing.link.id}
                    exact
                    to={thing.link.url}
                  >
                    {thing.link.text}
                  </NavLink>
                ))
                }
              </div>
            ))
          }
Run Code Online (Sandbox Code Playgroud)

使用"eslint-config-airbnb"

如果这是相关的,这也是我的componentDidMount函数

componentDidMount() {
  fetch('./data/data_arr.js')
  .then(results => results.json())
  .then(results => this.setState({ items: results }));
}
Run Code Online (Sandbox Code Playgroud)

任何尝试和理解这一点的帮助都会很棒.谢谢

Ngu*_*You 20

这叫做:

强制一致使用道具,状态和上下文的解构分配(反应/解构 - 赋值)

更多细节可在此处获得:解构 - 分配

为了使警告/错误消失,你可以这样做:

      ...
      const { items }= this.state;
      ...
      {
        items.map(item => (
          <div key={item}>
            {
            item.links.map(thing => (
              <NavLink
                key={thing.link.id}
                exact
                to={thing.link.url}
              >
                {thing.link.text}
              </NavLink>
            ))
            }
          </div>
        ))
      }
Run Code Online (Sandbox Code Playgroud)

  • 我的困惑是......为什么这是一个规则?看起来文档应该为自己做一个案例,也许可以认识到权衡. (12认同)
  • 我也想知道为什么在大多数实践中都是如此?因为在良好的编码实践中,我从[Robert Cecil Martin的书Clean Code](https://www.goodreads.com/book/show/3735293-clean-code)中阅读,所以最好保持尽可能近的距离变量的来源(来自变量的来源),以避免不必要的上下滚动。如果有任何严重的问题,谁能告诉我? (3认同)
  • 只是为了避免代码中出现多余的 `this.props` / `this.state` ,提高可读性。它与这个例子不太相关,但它在现实世界中要干净得多。 (2认同)