因此,在去年与react合作之后,我设法理解了它的功能和注意事项,以及如何避免不必要的渲染。
昨天我在玩一些代码,遇到了一个以前没有看到的问题,有点困惑。
import React, { useCallback, useState } from "react";
let renders = 0;
const Counter = () => {
const [count, setCount] = useState(0);
const increment = useCallback(() => {
setCount((c) => c + 1);
}, []);
renders = renders + 1;
console.log("Counter Render");
return (
<div>
<button onClick={increment}>increment</button>
<h2>renders: {renders}</h2>
<h4>Count: {count}</h4>
</div>
);
};
export default React.memo(Counter);
在上面的代码中,我添加了一个简单的计数器,每次单击都会设置一个新的状态,这会导致重新渲染,在屏幕上显示“Count:1”,并在dev工具中显示一个“counter render”日志,就像我预期的那样。
奇怪的部分来自渲染变量,我用数字0启动(在组件之外,当然),并在组件的每次渲染上递增我点击按钮,“渲染”的值增长2,即使“计数器渲染”日志每次显示一次。
下面是一个沙盒的例子
谁能解释一下我错过了什么?
问题内容: 在过去的六个月中,我一直在与Backbone合作。前两个月很混乱,学习并弄清楚我要如何围绕它构建代码。接下来的4个月,该公司推出了适合生产的应用程序。不要误会我的意思,Backbone使我摆脱了以前标准的成千上万行客户端代码的混乱,但是它使我能够在更短的时间内完成更多宏伟的事情,从而带来了一系列全新的问题。对于我在这里提出的所有问题,有一些简单的解决方案,感觉像是骇客或只是 错误 。我
你好,新年快乐; 我有一个关于我在项目中创建的JS文件的奇怪问题。 我正在使用PhpStom和Symfony工作,当我在js文件夹中创建一个JS文件时,不管怎样,如果我将它命名为"main.js"无疑会将这个文件变成一个文本文件,即使我选择创建一个JavaScript文件。 如果我给它取其他名字,它会很好用的。为了纠正这个问题,我可以很容易地更改名称,但这是一个联合项目,我无法更改。 我正在寻找P
从昨天开始,我已经开始与Android Studio的工作。我的问题是当我做我的布局。我有下一个错误(观看屏幕截图了解更多信息): 渲染问题:此版本的渲染库比您的Android Studio版本更新。请更新Android Studio 如果我检查更新,他会说我已经有了最新版本的Android studio,所以我无法更新。 我也在SDK管理器中安装了一些东西,请看下面的截图。 有人能帮我解决这个问
问题内容: 这是目录树: 在main.go中: 在client_test.go中: 错误: 我已经阅读了如何在golang中使用自定义软件包?而且我认为我有和这个人一样的解决方案,但是我只是不知道如何解决这个问题。请帮忙。 去环境: 问题答案: 命令去,测试包。 名称与文件模式“ * _test.go”匹配的文件可以包含测试函数,基准函数和示例函数。 不要使用保留名称。例如,将与贯穿始终。
问题内容: 我以前从未见过这种情况,很奇怪。 我有一个针对的本地SQL Server 2012 Express数据库。使用TestDrive插件运行简单的测试套件,并使用EF v5访问数据库。 我只是运行了一个将记录插入数据库的测试。我的表中有9行,其ID为1-9。下一个插入和ID恰好跳了10000 !!!! Id列为: 我知道插入失败也会增加ID,但我可以保证在测试运行之间的5秒内没有10,00
我在Chrome Developer Tools中出现这个错误已经有一段时间了,我似乎就是找不到不安全的http://请求。它指向我的域,但没有https://。http://www.example.com/不是一个脚本,所以我不明白它是从哪里来的。 内容混杂:“HTTPS://www.example.com/categoy/a-product.html”页面是通过HTTPS加载的,但请求的脚本“