【发布时间】:2026-01-07 17:00:02
【问题描述】:
我们有 useState 和 useReducer,在更改由它们创建的变量后,组件会重新渲染。但是我们也可以使用 useRef 以及简单地使用 let 和 const 创建变量。我迷失了在什么情况下我们必须使用 useState 创建变量,useReducer 什么没有?据我了解,如果我们需要在 DOM 中显示变量,那么我们使用 useState 和 useReducer 进行计算,我们使用 useRef 还是只使用常规的 let 和 const?我说的对吗?
例如,如果我读取scrollY的值,我应该将它存储在由let创建的变量中,如果我存储输入值我应该使用useState?
export default function(){
let scroll = useRef(0); // this ?
let scroll = 0 // this ?
let (scroll, changeScroll) = useState(0) or this // or this ?
// scroll var
useEffect(() => {
window.addEventListener("scroll", () => {
scroll = window.scrollY;
})
return () => {
window.removeEventListener("scroll",() => {
scroll = window.scrollY;
});
}
}, [])
【问题讨论】:
-
如果我正确理解了这个问题,您基本上想知道何时使用标准变量(
const,let)以及何时使用 React 钩子(useRef,useState)将信息存储在功能组件中?如果是这样,您应该阅读React Hooks Overview 和React Hooks API Reference,因为它们概述了何时使用每个不同的钩子。 -
关于您在问题中的假设,我想说它们不一定是正确的。任何类型的变量值都可以用作 JSX 的一部分并呈现到 DOM,并且可以以任何不同的方式来进行计算来存储变量。通过阅读我上面链接的文档,您会发现决策过程更多地基于“如何在组件生命周期中使用此值”。
标签: reactjs