在 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)
}, [])
有没有办法将状态初始化为真,然后在 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)
}, [])