来自 React 的 “Hello, world!”
ReactDOM.render(
<h1>Hello, world!</h1>,
document.getElementById('root')
);
React 是一个用于构建用户界面的 JavaScript 库。
React 使创建交互式 UI 变得轻而易举。为你应用的每一个状态设计简洁的视图,当数据变动时 React 能高效更新并渲染合适的组件。
本期技术周刊一起了解下 React ,欢迎大家阅读 ~
文章推荐
《React 内部是如何实现 cache 方法的?》 作者:卡颂
前几天写的一篇介绍 use
这个新 hook
的文章中聊到 React
原生实现了一个缓存函数的方法 —— cache
。
对于如下代码,被 cache
包裹的函数,当多次调用时,如果传参不变,会始终返回缓存值:
const cacheFn = cache(fn);
cacheFn(1, 2, 3);
// 不会执行fn,直接返回缓存值
cacheFn(1, 2, 3);
React
内为什么需要 cache
方法呢?
《一文解读 React 17 与 React 18 的更新变化》 作者:JackySummer
项目目前react17和react18都有使用,但在开发者角度绝大部分场景还是感知不到多大变化,但也要详细了解清楚具体更新了什么。本文就来一次性梳理下 react17与react18的变化。
《一个有趣的交互效果的分析与实现》 作者:夕水
根据视频所展示的效果,我们得出了我们需要实现的效果主要有 2 个部分:
- 拖拽并吸附
- 滚动半隐元素
那么如何实现这 2 个效果呢?我们一个效果一个效果的来分析。
ps: 由于这里采用的是 react 技术栈,所以这里以 react 作为讲解
首先对于第一个效果,我们要想实现拖拽,有 2 种方式,第一种就是 html5 提供的拖拽 api,还有一种就是监听鼠标的 mousedown,mousemove 和 mouseup 事件,由于这里兼容的移动端,所以我采用的是第二种实现方法。
思路是有了,接下来我想的就是将这三个事件封装一下,写成一个 hook 函数,这样方便调用,也方便扩展。
《浅析 React 中的 Ref》 作者:Itnd
我们在平常的学习和工作中,在使用函数组件的时候,常常会使用 useState 来生成 state ,每次 state 改变都会引发整个函数组件重新渲染,但是有些 state 的改变不需要更新视图,那么我们可以考虑使用 ref 来存储,ref 存储的值在发生变化后是不会引起整个组件的重新渲染的。
《手写一个 mini 版本的 React 状态管理工具》作者:夕水
目前在React中,有很多各式各样的状态管理工具,如:
- React Redux
- Mobx
- Hox
每一个状态管理工具都有着不尽相同的API和使用方式,而且都有一定的学习成本,而且这些状态管理工具也有一定的复杂度,并没有做到极致的简单。在开发者的眼中,只有用起来比较简单,那么才会有更多的人去使用它,Vue不就是因为使用简单,上手快,而流行的吗?
有时候我们只需要一个全局的状态,放置一些状态和更改状态的函数就足够了,这样也达到了最简化原则。
下面让我们一起来实现一个最简单的状态管理工具吧。
《React 魔法堂:echarts-for-react 源码略读》作者:肥仔John
在当前工业 4.0 和智能制造的产业升级浪潮当中,智慧大屏无疑是展示企业 IT 成果的最有效方式之一。然而其背后怎么能缺少 ECharts 的身影呢?对于 React 应用而言,直接使用 ECharts 并不是最高效且优雅的方式,而 echarts-for-react 则是针对 React 应用对 ECharts 进行轻量封装和增强的工具库。
echarts-for-react 的源码非常精简,本文将针对主要逻辑分析介绍。
问答推荐
关于 React 的问题,还有未解决的,欢迎正在阅读的小伙伴们一起来解决!
关于 React tabs 组件 API 设计的问题 ?
React 是怎么对比 Dom 节点并进行更新的 ?
React+ ts + vite3 项目中怎么引用 commonjs 模块的业务组件?
使用 vue 或 react 全家桶写页面比 jquery 加 bootstrap 写页面的优势在哪里?
是否使用了 react-redux 之后,就没有必要使用 context 进行传值了?
React 的函数式组件和类组件,哪种会更好,谁会成为未来趋势呢?
写 React 一般使用什么 Tab 还是 2 个空格进行缩进?
开源软件推荐
「 Answer 」—— 是 SegmentFault 思否团队对外开源问答社区软件
Answer 不仅拥有搭建问答平台(Q&A Platform)的基础功能,还在产品设计上融入了开发团队对社区发展的思考, 并将其经验产品化,加入了标签内容管理、徽章与声望值体系等功能。
欢迎每一位开发者的参与和贡献,如果你对产品设计与社区发展有任何想法和建议,都可以在 GitHub 上找到我们,共同建设 Answer 社区。
项目地址是:https://github.com/answerdev/...
项目官网是:https://answer.dev
# SegmentFault 技术周刊 #
「技术周刊」是社区特别推出的技术内容系列,一周一主题。
每周二更新,欢迎「关注」。大家也可以在评论处留言自己感兴趣的主题,推荐主题相关的优秀文章。
如有问题可以添加小姐姐微信~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。