• · Development

    【译&补】使用ref回调替代useRef吧

    在React中,useRef和useEffect常用于管理组件的可变值和副作用,但在响应DOM元素挂载时,使用useCallback作为ref的回调函数更为有效。useCallback确保在元素挂载和卸载时被调用,避免了因useRef导致的生命周期回调未触发的问题。文中还介绍了其他几种优化Node操作的方法,如使用useState、useStateRef和useRefWithCallback,以提高性能和管理复杂性。

  • · Development

    从设计模式看 react-redux 的工作原理

    本文探讨了redux的发布-订阅模式的实现,强调其与原生useContext和useReducer的区别。redux通过subscription实例实现按需刷新,避免无关组件的更新。文章详细介绍了发布-订阅模式的基本概念、与观察者模式的对比,以及redux中的实现,包括Provider组件和Hook API的用法,如useSelector和useDispatch等,展示了redux如何解耦组件与状态更新的过程。

  • · Development

    你真的需要useMemo和useCallback吗

    本文深入探讨了React中的useMemo和useCallback的使用场景和性能影响。useMemo用于缓存计算结果以减少不必要的计算,适合在计算开销较大的情况下使用,而useCallback用于缓存函数定义以避免不必要的组件刷新。作者强调,过度使用这两个Hook可能导致性能下降,建议在实际需要时再使用,并提出了其他优化方案,如使用useReducer和合理组织组件逻辑。

  • · Development

    Docker 里的 shebang 踩坑记

    在使用 Docker 部署 Node 后端项目时,遇到因 shebang 行尾符问题导致的错误。通过分析发现,Windows 的 CRLF 行尾符在 Linux 环境中导致无法识别 node,最终通过设置 VS Code 和 Git 配置为 LF 行尾符,以及使用 dos2unix 工具解决了问题。建议在团队中使用 .gitattributes 文件以确保一致的行尾符配置。

  • · Development

    初探 Docker - 原理和实践

    本文介绍了Docker的基本原理和实践,包括容器的轻量级特性、隔离机制、核心概念(镜像、容器、仓库)以及如何使用Docker命令启动容器、构建镜像和管理数据卷。强调了容器与虚拟机的区别,容器通过Linux的Namespace和Cgroups实现进程隔离,Dockerfile用于定义镜像的构建过程,数据卷用于实现容器间的数据共享和持久化存储。