【发布时间】:2019-06-12 15:19:27
【问题描述】:
以下功能性 React 组件运行 useEffect 钩子两次,即使一个空数组 [] 作为第二个参数传递并且该组件仅添加到页面一次:
const Tips = () => {
const [idx, setIdx] = useState(0)
useEffect(() => {
const interval = setInterval(() => {
setIdx(idx + 1)
}, 1000)
}, []) // empty array: run effect only once
return <>{idx}</>
}
如何确保间隔在 useEffect 函数回调中只启动一次?
另外,状态idx只更新一次,组件输出0,之后输出1。如何改变组件让idx计数器不断增加?
【问题讨论】:
-
你能说明你在哪里使用你的
Tips组件吗?仅从这段代码中,您的useEffect应该只触发一次 - 是否有任何可能导致它重新安装?
标签: reactjs react-hooks