咖喱函数内的 React 挂钩(创建 HOC)从 linter 返回错误“React Hook“useContext”无法在回调内调用”

问题描述 投票:0回答:2

在我的项目中,我摆脱了类,只使用 Hooks。现在,我正在尝试创建 HOC,但我的 linter 在我的 curry 函数中使用 Hooks 时返回错误。这是我的代码的简化版本:

const myCurryFunction = WrappedComponent => props => {
  const [state, setState] = React.useState();
  return <WrappedComponent {...props} />
}

完整的 eslint 错误是这个:

React Hook "useState" cannot be called inside a callback. React Hooks must be called in a React function component or a custom React Hook function.

有什么线索吗?我真的很感激任何建议

reactjs react-hooks currying high-order-component react-hoc
2个回答
1
投票

我发现了这个github问题: https://github.com/facebook/react/issues/20531

HOC 模式应该可行,但非常具体。


1
投票

两种选择供您选择。

  1. 尊重 hooks 规则,更改你的代码。

     const myCurryFunction = WrappedComponent => function Comp(props) {
        const [state, setState] = React.useState();
        return <WrappedComponent {...props} />
     }
    
  2. 关闭源文件的 lint。

© www.soinside.com 2019 - 2024. All rights reserved.