如下,增加一个 timeDateG 不是最优雅的方式吧?
import { useEffect, useState } from "react"
let timeDateG = '00:00:00'
const UseStateIssue = () => {
const [timeDate, setTimeDate] = useState('00:00:00')
useEffect(()=>{
timeDateG = timeDate
}, [timeDate])
useEffect(()=>{
const interval = setInterval(()=>{
console.log('timeDate', timeDate) // 一直是 '00:00:00'
console.log('timeDateG', timeDateG) // 解决方法 1
}, 2000)
return () => clearInterval(interval)
}, [])
return (
<div>
<div>{timeDate},这里正常刷新</div>
<button onClick={()=>{
setTimeDate(new Date().toLocaleTimeString())
}}>setTimeDate</button>
</div>
)
}
export default UseStateIssue
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.