【发布时间】:2021-06-07 03:22:03
【问题描述】:
我有一个返回功能组件的 HOC(高阶组件)。 我想使用 useState 但收到以下错误消息:
“src/HOC.js 第 5:35 行:不能在回调中调用 React Hook “useState”。 React Hooks 必须在 React 函数组件或自定义 React Hook 函数 react-hooks/rules-of-hooks 中调用”
import React, { useState } from "react";
const HOC = (Component, data) => {
return () => {
const [count, setCount] = useState(data); // Error here
const handleClick = () => {
setCount(count + 1);
};
return (
<Component
countNumber={count}
handleClick={handleClick}
/>
)
}
};
export default HOC;
import React from "react";
import HOC from "./HOC";
const LikesCount = ({countNumber, handleClick}) => {
return (
<div>
{countNumber} <br />
<button onClick={handleClick}>Like</button>
</div>
);
}
const EnhancedLikes = HOC(LikesCount, 5);
export default EnhancedLikes;
在这个 HOC 场景中有什么方法可以使用 useState 吗?
【问题讨论】:
-
为什么不使用 HOC,而不是使用自定义挂钩?因为 Hooks 取代了 HOC。如果您想要一个像 HOC 一样的自定义挂钩(可以“挂钩”在其他组件上),我可以发布答案。
-
语法不正确。你在 setCount 之后关闭块吗?
-
@RahulSharma 这是一个错字。刚刚修好了。
-
@IamL 如果它能让我达到同样的效果,看看它是如何工作的将会非常有趣。
-
@JohnBonjon 我发布了答案
标签: reactjs react-hooks use-state high-order-component