reactjs - 有条件地调用 React Hook “useState”
问题描述
React 抱怨下面的代码,说它 useState 和 useEffect 被有条件地调用。没有打字稿,代码工作正常:
import React, { useState, useEffect } from "react";
const useScrollPosition = () => {
if (typeof window === "undefined") return 500;
// Store the state
const [scrollPos, setScrollPos] = useState(window.pageYOffset);
// On Scroll
const onScroll = () => {
setScrollPos(window.pageYOffset);
};
// Add and remove the window listener
useEffect(() => {
window.addEventListener("scroll", onScroll);
return () => {
window.removeEventListener("scroll", onScroll);
};
});
};
export default useScrollPosition;
解决方案
你有一个提前返回,所以它被有条件地调用if (typeof window === "undefined") return 500;
您需要在提前返回之前移动挂钩。有关详细说明,请阅读此https://reactjs.org/docs/hooks-rules.html
推荐阅读
- google-apps-script - 如何循环API的页码?
- android - 片段中的 Gif (AnimatedImageDrawable) Android
- c++ - RcppArmadillo 和头文件
- java - 如何设置标记标签的文本
- css - mergeStyles 不能是父级(按类)的子级(按 id)
- ethereum - 反应应用程序内部 JsonRPCProvider 的 Ethers Provider CORS 错误
- java - 从文件读取到链接列表时如何添加空格字符?
- fabric8 - Fabric8 customResourceDefinitions 测试
- xslt - How do I get my XSLT script to drill down 2 documents and compile the data into one HTML file?
- excel - 将工作表 2 中的 B2:B16 行粘贴到工作表 1 上新插入的列上