V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ruxuan1306  ›  全部回复第 7 页 / 共 16 页
回复总数  320
1  2  3  4  5  6  7  8  9  10 ... 16  
2022-11-11 19:00:27 +08:00
回复了 zhangfeiwudi 创建的主题 问与答 如何快速背单词,有好的方式吗
如果忘了,那说明你选择的那些词你其实用不上,大脑发现激活过少,自动启动 LRU 算法淘汰节能了。

除了短期应试,没必要背单词,语言是工具不是目的。

刚开始不要离开舒适区太远,会有很强的挫败感,可以尝试用英语去重学你熟悉的东西,比如上 Youtube 看外国老师用英语教中文的视频。
@ragnaroks 只面向 StackOverflow 的话永远不知其所以然,永远外包水平。

@sillydaddy 学习方法是对的,我是读了那个长长的博客里的很多篇才明白的。

我认为关键是要搞清 React 一帧一帧渲染的思想,每帧渲染(函数组件执行返回),且上屏后(协调完成),才按顺序执行每帧各自的 Effect ,值得注意的是,这些 Effect 仍然处在其所属帧的闭包里。
#29 楼第一句描述不准确,#30 楼补充修正了。

如果难以看懂,就好好读#20 楼的那篇博文。
对于 React 每一个渲染帧:
1State 变化触发 React 虚拟 DOM 渲染,整个虚拟 DOM 树渲染完毕后,启动协调(对齐虚拟 DOM 到浏览器 DOM ),协调完毕后,开始异步执行上一帧 Effect 的析构函数,最后再执行本帧所有的 Effect 函数。

注意到了吗,因为本帧的 Effect 回收函数实际在下一帧前执行,也就是在上一帧协调完成的时刻,虽然上一帧的 State 已经渲染上屏用户可见了,但此时上一帧 Effect 的析构函数还没执行,注册在浏览器的还是上一帧的 cb 函数。
如果此时浏览器触发的 wheel 事件,上一帧的那个 cb 还困在自己过去的闭包,setCount 就还在用上一帧的 count 。
楼主代码大概是 Effect 异步顺序导致旧渲染帧的 Effect 后执行了。
楼上那篇超长博文很有价值阅读。
监听器一般只设置一次。


https://codesandbox.io/s/fervent-taussig-x3mdkq?file=/src/App.jsx

```
import { useEffect, useState, useRef, useCallback } from "react";

import "./styles.css";

const useWheel = (divRef, count, setCount) => {
const countRef = useRef(0);
countRef.current = count; // 每次 count 变化存入所有渲染帧共享的空间

const callback = useCallback(
// cb 的闭包被冻结,但可以通过所有渲染帧共享的 ref 获取变化
(ev) => {
ev.preventDefault();
setCount(countRef.current + Math.floor(Math.abs(ev.deltaY / 5)));
},
[setCount]
);

useEffect(() => {
const el = divRef.current; // useEffect 是协调之后异步触发,此时 divRef 必然已被填充
if (!el) return; // 除非该节点渲染错误
el.addEventListener("wheel", callback, { passive: false }); // 仅设置一次监听器
return () => el.removeEventListener("wheel", callback); // 仅取消一次监听器
}, [divRef, callback]);
};

export const Main = (props) => {
let [count, setCount] = useState(0);
let divs = new Array(25000)
.fill(0)
.map((v, i) => <div key={i + count}>{i + count}</div>);

const refDiv = useRef(null);
useWheel(refDiv, count, setCount); // ref 作为参数传入语义上更好
return <div ref={refDiv}>{divs}</div>;
};

export default function App() {
return (
<div className="App">
<Main />
</div>
);
}
```
2022-11-10 05:30:23 +08:00
回复了 stroh 创建的主题 问与答 现在还有没有好用的同步笔记?
最近国内也有个类似 notion 的叫 flowus
2022-11-02 21:46:39 +08:00
回复了 Hopkins 创建的主题 问与答 关于一个垃圾背景想润🇨🇦的提问:
[打算跟无良移民中介死磕,以后义务解答加拿大移民问题:没法帮你填坑但可以帮你躲坑,最烦忽悠和骗子 20221027]
BV1RV4y1G7da
2022-11-01 21:35:36 +08:00
回复了 a33291 创建的主题 宽带症候群 获取到的 ipv6 地址无法 ping 通
在路由器下能 ping 通 PC1 吗
2022-10-31 22:06:09 +08:00
回复了 secsilm 创建的主题 分享创造 Benford's law 与 COVID19
国内确诊人数肯定是远高于卫健委统计值的,就和失业率一样。
ETH2 算力脱钩之后,感觉就像与黄金脱钩的美元,本周 ETH/BTC 刚好大涨,我或许可以换 BTC 。
2022-10-30 00:31:54 +08:00
回复了 Xymmh 创建的主题 宽带症候群 目前网站的 IPv6 支持程度
这是哪个插件,挺有意思
2022-10-29 20:59:09 +08:00
回复了 Jimmyisme 创建的主题 宽带症候群 如何部署远程控制服务器?
Next Terminal 是一个轻量级堡垒机系统,支持 RDP 、SSH 、VNC 、Telnet 、Kubernetes 协议。
2022-10-28 20:34:35 +08:00
回复了 LnTrx 创建的主题 程序员 b 站一个介绍 IPv6 的视频火了,但是问题也很多
@aphorism 第 45 任美国总统非常赞同。
2022-10-28 20:20:20 +08:00
回复了 yukunZhan9 创建的主题 问与答 请教一下,关于 ipv6
@XIU2 家庭网关路由设备上要允许外向内的 IPv6 转发,不然就只能内部主动往外建连。

比如我会在 OpenWRT 上开启一个转发,这样在公司 WiFi 下就可以用 DDNS 域名加密直连回家,避免摸鱼流量被网管看到:
ip6tables -A FORWARD -p tcp --dport 1088 -j ACCEPT
2022-10-28 02:54:23 +08:00
回复了 tool2d 创建的主题 随想 我终究还是小看了 AI
绘图 AI 的诞生降低了生产一张画的社会必要劳动时间,降低了画中蕴含的无差别的人类劳动。

此时,如果分配制度健康,全体画手都能享受到这种技术进步带来的劳动时间降低。
比如从原先每天工作 8 小时,降到每天 4 小时、甚至 2 小时。
这些被解放出的时间可以让艺术家思考更有创意的元素组合或构图,反馈给 AI 训练,正向循环良性发展。

但如果分配制度有问题,比如资本主义下,则会变成少数画手沦为天天加班改手失去思考的 tagger ,多数画手失业离开,AI 失去更有创意的输入,生成的东西来来回回总是训练集内容的线性组合,最终停滞不前。


最终,又回到了马克思主义基本原理:
生产力决定生产关系,生产关系反作用于生产力。
适合当前生产力的生产关系促进生产力的发展,不适合当前生产力的生产关系抑制生产力的发展。
2022-10-24 12:26:24 +08:00
回复了 MoRanjiang 创建的主题 问与答 高数学得很迷茫
就算做深度学习,最高深的也就是个偏导数。
科学计数法,十的几次方前面乘的那个数。
感觉读着累,是不是无衬线字体好点,你看 V2EX 就是无衬线字体。
1  2  3  4  5  6  7  8  9  10 ... 16  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2162 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 34ms · UTC 05:04 · PVG 13:04 · LAX 22:04 · JFK 01:04
Developed with CodeLauncher
♥ Do have faith in what you're doing.