我有一个如下的React测试代码:
const [tracerouteMsgs, setTracerouteMsgs] = useState([])useEffect(() => { console.log('result: ', tracerouteMsgs)}, [tracerouteMsgs])...<Button onClick={() => { setInterval(() => { const tempTracerouteMsgs = tracerouteMsgs.concat(3) setTracerouteMsgs(tempTracerouteMsgs) }, 1000)}}>traceroute测试</Button><span>tracetoute结果:</span>{ tracerouteMsgs.map((item, index) => ( <span key={index}>{item}</span> ))}
当我在点击按钮的时候(这里只显示3):
控制台打印:
这里没有符合预期,预期是想要应该是这样才对
[3][3, 3][3, 3, 3][3, 3, 3, 3]...
首次点击按钮时,click函数里持有的tracerouteMsgs
的值是初始化拿到的[]
, 即使调用setTracerouteMsgs
后更新tracerouteMsgs
的值,但函数里面的仍然是最初是[]
,因此你打印出来的结果一直都是[3]
改成这样:
setTracerouteMsgs(prev => prev.concat(3))
我使用AWS Elasticsearch服务版本7.1及其内置Kibana来管理应用程序日志。Logstash每天都会创建新索引。我的Logstash不时会出现有关最大分片限制范围的错误,我必须删除旧索引才能再次工作。 我从这个文档(https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/aes-handlin
问题内容: 我的开发机器上有8GB RAM,并试图运行Apache Tomcat(7.0.29)同时托管Artifactory(2.6.3)和Jenkins(1.479)。我试图找到Jenkins的内存需求,但看起来他们的Wiki断了。 在中,我添加了以下命令: 这应该将Tomcat的JVM的大小保持在(基本上)1到3 GB之间,为我留出足够的空间来容纳其他内容, 并 为Tomcat留出足够的内存
null 当我创建正文部分时,我是否应该显式地设置top mime消息的内容类型,然后设置每个正文部分? 如果是,在上面的例子中它们应该是什么? 对于html建议,对于附件建议,对于内联建议。我正在使用所有这些,那么对于完整的消息和不同的主体部分应该是什么内容类型? 通过上面的代码,我得到了正确的html文本,纯文本,内联图像和附件在正确的地方与James集成的ThunderBird。 因此,我不
我有如下的使用zustand store的示例: 1、文件:store/index.ts 2、在pages/home页面中: 为何在我的pages/home 页面中会直接报错呢?引入todoList报错: 我这样引入就不会报错:
问题内容: 我正在尝试显示媒体存储的多个列,例如艺术家,专辑,标题等。我能够正确获取arraylist中的一个列,并且可以正常工作,但是当我添加另一个列时,所有列都在同一列中数组列表,所以我创建了一个类,并在该类方法中添加了列。但是我无法在custome适配器中声明它,这是我的代码。 活动主体 方法类别 CustomeAdapter 定制XML 如何将方法设置为数组。如何获取任何示例的方法都将有所
问题内容: 为什么?将迭代器项指针移到第一位置的最佳方法是什么? 问题答案: 为什么? 因为如果强制迭代器具有重置方法,则 每个 迭代器都必须具有重置方法。这给每个迭代器编写者额外的工作。再加上一些迭代器确实很难重置(或者真的很昂贵),并且您不希望用户对其调用reset。文件或流上的迭代器就是很好的例子。 将迭代器项指针移到第一位置的最佳方法是什么? 创建一个新的迭代器。它很少比重置昂贵。