在 UseState 挂钩中更新布尔值

Update Boolean Within UseState Hook

有没有办法将状态初始化为真,然后在 useState 的 x 时间后变为假?

目前看起来像这样:

const [scrollDown, setScrollDown] = useState(true)

setTimeout(() => {
    setScrollDown(false)
  }, 2000)

想做这样的事情,但语法似乎不正确:

const [scrollDown, setScrollDown] = useState(() => {
   setScrollDown(true)
   setTimeout(() => {
    setScrollDown(false)
  }, 2000)
})

也试试这个:

const [scrollDown, setScrollDown] = useState(true, () => {
    setTimeout(() => {
      setScrollDown(false)
    }, 1000)
  })

恐怕您提到的两个代码片段都不正确。 useStates 需要该值,但我们什么也没有返回。此外,我们不能将第二个参数传递给 useState。您最好的选择是使用仅在第一次渲染时运行的 useEffect。在那里你可以设置你的超时时间。

就像其他人提到的那样,使用 useEffect 效果最好,所以我选择了这个解决方案。我的问题最初是传递第二个空数组 arg:

const [scrollDown, setScrollDown] = useState(true)

  useEffect(() => {
    setTimeout(() => {
      setScrollDown(false)
    }, 1000)
  }, [])