被问到这个问题,首先直觉肯定是不会啊。可仔细一想,什么才算一样的值呢?熟读文档的你,可能马上就有了答案,由 Object.is
比较确定,不同则会重新渲染。
可现实真的如此吗?我就是为了复述一下文档而水一篇文章?
请看下方代码,当第一次点击set 2
按钮,count
由0变为2,组件重新渲染,符合文档。
当第二次点击set 2
按钮,count
已经是2了,再设置为2,应该就不会渲染了。
错,实践是检验真理的唯一标准。
当第二次点击set 2
按钮时,组件被重新渲染了。。。不符合文档了。。
那么点击第三次呢?
什么?又不会重新渲染了。。。又符合文档了。
这会是一个BUG吗?请机灵又聪明的各位朋友评论区谈谈你们的见解。
import { useEffect, useState } from "react";
import "./App.css";
function App() {
const [count, setCount] = useState(0);
useEffect(() => {
console.log("count changed", count);
}, [count]);
console.log("rendered", count);
console.log("count is 2", Object.is(count, 2));
return (
<>
<div>
<button onClick={() => setCount((count) => count + 1)}>
count is {count}
</button>
<button
onClick={() => {
console.log("setCount", count);
setCount(2);
}}
>
set 2
</button>
</div>
</>
);
}
export default App;
支持一下
本人正在找工作,如在长三角有合适岗位,请联系我
热情地欢迎各位兄弟姐妹的大力支持!
github: github.com/leafio?tab=…
期待至少一个项目能达成1000个star
期待至少一个npm能达成每周1000次下载
- Soon-Admin TS全栈后台管理系统
- 前端vue3版:soon-admin-vue3
- 前端react版:soon-admin-react-nextjs
- 后端express:soon-admin-express
- soon-mock 一键生成增删查改,有ui的json-server,可js自定义逻辑
- soon-tools 分层级JSON转TS类型,JSON导出多级表头Excel。有网页版、npm、exe三种方式使用
- soon-i18n 类型安全的函数式i18n库,支持vue3、react、solid、svelte
- soon-storage 对于localStorage的类型安全封装
- soon-fetch 不到3K的组合式请求库
- react-vmodel 多层级objcet双向绑定,像vue一样简单