[英]invalid hook call with nextjs inside custom hook
在我的自定义挂钩中使用 state 时出现无效的挂钩调用错误。 这是我的代码
import { useState } from 'react';
export default function useFetch() {
const [randomValue, setRandomValue] = useState<number>();
setRandomValue(3);
return randomValue;
}
钩子在路径上的我的钩子文件夹中:./src/hooks
有什么理由吗?
您的评论提到您从 useEffect() 内部调用useFetch()
useEffect()
。 这就是你的问题所在。
挂钩仅在组件渲染期间调用时有效。 useEffect()
在渲染后触发。 所以你不能从useEffect
内部调用任何钩子。
由于您尚未发布该代码,因此很难建议如何解决该问题。
此外,这同样重要,切勿在渲染期间调用 state 设置器 function。 请记住,钩子函数在组件呈现时运行。 设置 state 会触发渲染,因此这通常会导致无限循环。
大多数时候,当获取一个值并将其设置在 state 中时,您应该为其类型(如null
)设置一个有效的初始值,并使用useEffect()
来设置您想要的东西。
请记住, useEffect
表示“使用副作用”,其中副作用是渲染可能触发的东西,但不会在每个渲染中同步执行。
export default function useFetch() {
const [randomValue, setRandomValue] = useState<number | null>(null);
useEffect(() => {
setRandomValue(Math.floor(Math.random() * 10));
}, [setRandomValue]}
return randomValue;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.