如何解决 eslint 错误:自定义路由组件中的“禁止传播道具”?

Posted

技术标签:

【中文标题】如何解决 eslint 错误:自定义路由组件中的“禁止传播道具”?【英文标题】:How to resolve eslint error: "prop spreading is forbidden" in a custom route component? 【发布时间】:2020-03-02 16:39:11 【问题描述】:

如何解决自定义路由组件中的 eslint 错误:“prop spread is disabled”?

此错误发生在下面的第 3 行和第 6 行:

const PrivateRoute = (component: Component, ...rest) => (
  <Route
    ...rest
    render=(props) => (
        localStorage.getItem('user') ?
          <Component ...props /> :
          <Redirect to=pathname: '/login', state: from: props.location />
  )
  />
);

【问题讨论】:

【参考方案1】:

ES lint 不鼓励使用 prop 传播,因此不会将不需要的/意外的 props 传递给组件。 更多细节在这里:https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-spreading.md

要为特定文件禁用它,您可以在组件文件的第一行输入:/* eslint-disable react/jsx-props-no-spreading */。 要为所有文件禁用它,请尝试以下操作:Disable in EsLint "react / jsx-props-no-spreading" error in Reactjs

根据下面的答案编辑 cmets

【讨论】:

谢谢你!我添加了一条规则 "react/jsx-props-no-spreading": ["error", "custom": "ignore"] 它解决了问题【参考方案2】:

因为 ESLint 很重要,你使用哪种类型的注释,合法的是:

/* eslint-disable react/jsx-props-no-spreading */

【讨论】:

这……在我的头撞墙太久之后。评论类型显然很重要。【参考方案3】:

如果您使用的是 vscode 并安装了 eslint 插件,那么只需 hover over the error it will open the dialog as shown in image -&gt; quick fix -&gt; disable for this line.

这样做会自动添加正确的 lint 注释。

【讨论】:

【参考方案4】:

你可以用这个来注释下面一行:-

/* eslint-disable-next-line react/jsx-props-no-spreading */

【讨论】:

以上是关于如何解决 eslint 错误:自定义路由组件中的“禁止传播道具”?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 ESLint 控制开发人员对组件的属性输入?

当我导航到其他路由器页面时,如何清除由错误边界创建的自定义消息

如何解决我的 React 按钮组件中的错误?

十自定义指令与ESLint代码检查工具使用

如何解决 Cloud Functions 项目中的新 ESLint 错误?

打字稿反应组件中的反应/道具类型eslint错误