reactjs - 在反应计时器应用程序组件中没有重新渲染
问题描述
有人可以发现错误,UI 没有呈现,我尝试通过 formatTime
作为依赖项传递给,useEffect
但它的行为非常烦人。
观察:有时它在页面重新加载时起作用但有时它不重新呈现视图不一致
import React, { useState, useEffect, useCallback } from "react";
import "./styles.css";
export default function App() {
let date = new Date();
const formatTime = useCallback(() => {
return (
date.getHours().toString() +
":" +
date.getMinutes().toString() +
":" +
date.getSeconds().toString() +
":" +
date.getMilliseconds().toString()
);
}, [date]);
const [timer, setTimer] = useState(formatTime());
useEffect(() => {
let interval = setInterval(() => {
setTimer(formatTime());
});
return () => {
clearInterval(interval);
};
});
return (
<div className="App">
<h3> Timer: {timer.toString()} </h3>
</div>
);
}
解决方案
推荐阅读
- mongodb - 如何在 Apollo 解析器(Meteor/Apollo/Graphql)中返回聚合查询?
- javascript - JQuery:一旦元素出现,使用 ClearInterval 停止刷新
- html - 如何在html中进行高级文本调整?
- node.js - Firebase 云函数增量计数器
- c# - C# MongoDB 按计算排序
- python - lmfit 步进函数和步长
- scala - 无法访问资源下的文件(streamlets)
- java - JPA 从现有的 CriteriaQuery 创建计数查询
- c++ - 将标量添加到特征矩阵(向量)
- firebase - Flutter 和 Firebase - Apple 登录不起作用