作者回复: 你好,海华呀,很简洁有效的实验,赞!
作者回复: 你好,WL,感谢你的反馈。目前这个专栏的整体,还有每节课的局部,基本都是按照表层-底层-表层-底层逻辑设计的,每节课设计的内容密度与这套逻辑相关。我和专栏编辑也商量过,在不改变课程总体设计的前提下,我们会尽量平衡各位同学的学习需求。
作者回复: 你好,潮汐,我用 https://gitee.com/evisong/geektime-column-oh-my-kanban/releases/tag/v0.11.0 的代码在本地跑了一下,没观察到你说的情况,请问你使用的 git commit id 和浏览器版本是怎样的?
作者回复: 你好,阿阳,感谢你的认可,衷心希望你从本专栏中有所收获。 专栏每节课课后都有1~2个思考题,初衷是为了鼓励同学们思考、讨论,提升学习效果。可以看到在每节课的留言区,已经有了不少优秀的答案,一些答案下面有我的评论,也有部分答案引起了同学们的热烈讨论。 在连载期间,根据同学们的留言,我们也选了3个主题制作上线了两节加餐:《加餐01|留言区心愿单:真·子组件以及jsx-runtime》和《加餐02|留言区心愿单:Fiber协调引擎》。目前虽然连载已经告一段落,还是非常欢迎同学们留言参与互动,我们也会根据同学们的需求,考虑是否额外加餐。 在此也感谢所有参与互动的同学们,谢谢你们!
作者回复: 你好,癡癡的等你歸,你说的源码链接是下面这个吗? https://gitee.com/evisong/geektime-column-oh-my-kanban/releases/tag/v0.11.0 我用电信宽带和联通5G都试了试,目前都能正常访问(虽然后者有点慢)。请再试试,如果还是不行请告诉我们你的电信提供商和连接方式,我会请Gitee排查。
作者回复: 你好,Geek_8e9c8d,抱歉由于之前一直在赶稿,这么久才回复。第24节课的特别企划开源项目在: https://gitee.com/evisong/geektime-column-oh-my-kit 很快就会正式运转起来,非常期待你的加入。 关于第10节课省份+城市的思考题,基本知识点就是那个依赖值数组。文稿中的代码: // ------------ -------------- // | 省份... |v| | 城市... |v| // ------------ -------------- const [province, setProvince] = useState(null); const [cities, setCities] = useState([]); useEffect(() => { if (province === '山东') { // 这些数据可以是本地数据,也可以现从服务器端读取 setCities(['济南', '青岛', '淄博']); } }, [province]); 意思就是当 province值有变化才会再次执行前面的副作用回调函数,来更新城市列表state。
作者回复: 你好,01,这是个好问题。我也赞同合成事件增加了开发者的认知负担。不过我也会从下面几个方面思考合成事件对于React的必要性: 1. React对事件系统的限制。对于DOM event,只要开发者愿意,可以做到很多替代React数据流的事情,而合成事件,则只保留了主要是与用户交互相关的部分能力,保证它不会跟React其他特性抢活儿。 2. 合成事件对于特定事件的所谓规范化,尤其是onChange,算是受控组件的基本实现原理,如果放手给原生DOM事件,受控组件方案可能需要调整。 3. 原生DOM event的事件处理是同步执行的,可能会阻塞页面,我本想对比一下合成事件处理是不是异步执行的,但我查过React源码packages/react-dom/src/events/和一些资料,还没有发现有地方说明这一点。 4. 在React 17,合成事件处理函数中修改多次state,会自动批处理,只触发一次渲染,原生DOM事件处理函数中如果也修改多个state,是不享受这个待遇的;不过这个优势在React 18已经不存在了,只要是事件处理函数中,都可以自动批处理,只渲染一次: elm.addEventListener('click', () => { setCount(c => c + 1); setFlag(f => !f); // React will only re-render once at the end (that's batching!) }); 具体可以参考 https://github.com/reactwg/react-18/discussions/21 如有补充或其他观点,欢迎继续回复讨论。
作者回复: 你好,joel,我看了下你留言的日期,学习速度快得让人羡慕 :) 很高兴专栏能引起你的学习兴趣。