V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  w4ngzhen  ›  全部回复第 2 页 / 共 6 页
回复总数  110
1  2  3  4  5  6  
89 天前
回复了 Asuler 创建的主题 React 请教一个 react hook 的问题
另外,useEffect 一定要分两步看:它“吃”了一个匿名函数,但是不意味着它立刻会调用;调用的时机取决 React 所的定义的依赖判定。
89 天前
回复了 Asuler 创建的主题 React 请教一个 react hook 的问题
```jsx
const App = () => {
const [count, setCount] = useState(1);
const handle = () => {
console.log('做些事');
}
useEffect(() => {
handle();
}, [count])
return <button onClick={() => setCount(count + 1)}>Add One</div>
}
```

感觉大家没有回答到点上啊。首先,React 中的函数式组件,每“运行”一次,是一个时刻的结果。比如上面的 App 函数,完成一次加载以后。实际上就是运行了一次 App 函数,对于第一次视为 t1 ,t1 流程是:
1. 初始化了一个 count 的 state
2. 通过变量`handle`定义了一个函数
3. 执行了一次 useEffect
4. 返回了一个`<button />`

这里面最关键的点是步骤 3 执行 useEffect 。在第一次运行的时候,这个匿名方法:

```js
// t1 时刻的匿名函数
() => {
handle(); // t1 时刻的 handle 变量
}
```

被 React 存放到了内部,并且它捕获了 t1 时刻的变量`handle`,并且,通过`[count]`定义了依赖项。并且,t1 的匿名函数会执行一次。

当你点击按钮的时候,由于调用了 setCount ,在上述场景下,会导致 App 重新执行一次,我们把第二次执行的流程视为 t2 。它的过程是:

1. 由于第 2 次了,useState 拿到的值不再是初始值,而是上一次 set 的值,在上面的例子是 2 ;
2. 通过变量`handle`定义了一个函数。这里的 handle ,跟 t1 阶段的 handle 完全是两个变量,它们仅仅是名字一样,代码块一样而已。
3. 执行一次 useEffect 。此时,生成了一个 t2 时刻的匿名函数:

```js
// t2 匿名
() => {
handle(); // 这里的 handle 也是 t2 时刻的 handle ,跟 t1 的 handle 没有任何关系
}
```

此时,t1 的 count = 1 与 t2 的 count = 2 不一样了,所以,useEffect 中的匿名函数( t2 版本)会执行一次,handle 自然就是 t2 版本的 handle 。

另外,上述场景中的 handle 能用 count 这个 state 吗?当然可以,因为 t2 时刻的 handle 捕获的是 t2 时刻的 count 。
90 天前
回复了 yuntun 创建的主题 程序员 来聊聊最近遇到的烦心事
看到楼上 TimCook 真蚌埠住了,啊哈哈哈
读大学开始写的,杂七杂八也有 100 篇了,知乎、掘金,还有自己的博客站同步发: https://compilemind.com/
在浏览器上,网络请求中,针对请求,右键 —— 复制 —— “以 cURL 格式复制”,再在 curl 中试下。
97 天前
回复了 nutting 创建的主题 随想 想消费,没啥可买的了?
如果你没有想买的东西,那就确实没有需求。
98 天前
回复了 anson264556364 创建的主题 问与答 你买得最值得的软件是什么?
请教各位大佬,本人有国区 appleid 和美区 appleid 。但是现在基本上都用国区 id ,想下载小火箭是不是需要:
1 、同一台设备切换到美区 apple id 下载小火箭,然后切换会国区使用。
2 、小火箭充钱怎么解决呀?
98 天前
回复了 anson264556364 创建的主题 问与答 你买得最值得的软件是什么?
@idioteque7 官网就能看到,个人使用第 1 、2 、3 年续费的价格: https://www.jetbrains.com/store/#personal
98 天前
回复了 anson264556364 创建的主题 问与答 你买得最值得的软件是什么?
JetBrains 全家桶,今年续费第 4 年了。
98 天前
回复了 Trinity888 创建的主题 程序员 请问目前有替换 Qt 的技术框架吗?
列举些跨平台的:
Rust:iced (支持多窗口)
C/C++:wxWidgets (对各平台原生封装)
C#:avalonia
Kotlin:kotlin compose
另外,还有一种模式就是,底层基于各平台的图形绘制 API ( OpenGL 、Metal 甚至是 wgpu )作为绘图能力,然后上层封装各种组件绘制的库,来“画”组件,好处是只要设备能画图,就能渲染组件,但是对原生多窗口支持不确保 OK 。这种方案有:Flutter 、各种立即模式渲染库( Im 模式 GUI ),甚至一般 Web 网页。
看到了你们发的截图,是如何评判命令行工具复杂度算是 level1 ?就因为没有 UI 么?
104 天前
回复了 a66243766 创建的主题 macOS 求解工作环境 appleid 管理的最佳实践
我工作 mac 上压根儿就没登陆 appleId ,本来就是工作笔记本。
个人觉得乐刻不错,1 、现在大众的健身意识越来越好,免不了想去健身房锻炼,但是苦于普通健身房的年费机制,乐刻的收费模式比较 OK ,发展肯定不错; 2 、现在开发者本来就缺类似的锻炼,乐刻好歹也是健身起家,应该会有锻炼身体的氛围哈哈。
107 天前
回复了 seanwhy 创建的主题 程序员 基于 Webassembly 的一些问题
另外对于产品设计方面,看到贵司的软件是 C++三维软件,我假设是一款生产力软件,作为用户,我用客户端在 PC 上使用,明显比在浏览器上使用更加放心😂。
107 天前
回复了 seanwhy 创建的主题 程序员 基于 Webassembly 的一些问题
“只能说客户端被浏览器蚕食的太厉害了” 还是没有 Get 到真正的原因,公司是希望以后这块的软件都通过浏览器作为媒介来使用,因为它随时可用,方便快捷,不用下客户端?但假设你真正编译为了 wasm ,大小并不比原生应用小。当然,我只是作为旁观者提出的疑问😂。
107 天前
回复了 iszengmh 创建的主题 React 为什么我感觉 react 很难学
@Seria 然而 JSX 和 React 其实没有必然的关系,你完全可以写 React.createElement ,但最后发现构造 UI ,特别是嵌套 UI ,还是类似 JSX 这样的语法糖好用。另外,实际上 React 中的 JSX 标签和 HTML 中的标签,完全是两个东西,只不过为了更接近 HTML 而做的一样。
个人最不喜欢的就是一个项目会有 N 多个补丁式的脚本运行后才能进行开发、构建,而且没有文档来说明这些脚本究竟的作用是什么。
帝国时代 4 挺多人玩的呀
166 天前
回复了 lovejunjie1 创建的主题 微信 微信的文字识别是不是离线的?
可以用 tesseract 自己编译并本地自训练一个。
https://github.com/tesseract-ocr/tesseract
关于 TS 类型检查和 IDE 之间的关系,推荐 po 主读一下我写的这篇文章,应该能够解答你的疑惑。https://zhuanlan.zhihu.com/p/620451796
1  2  3  4  5  6  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   968 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 35ms · UTC 21:52 · PVG 05:52 · LAX 14:52 · JFK 17:52
Developed with CodeLauncher
♥ Do have faith in what you're doing.