2022 年 react 生态,大家都用啥

2022-05-05 12:25:52 +08:00
 yuthelloworld

去看了一圈 React 的生态,光状态管理就有很多库,还有自己的 useRedcuer + useContext 可以做状态管理。数据请求相关的有 React Query 。

我自己还停留在 React + Ts + Redux 这一套。奥,react-router 6 也有不少更新点。

学不动了,譬如说 Rtk, Rtk query ,光看文档都需要投入不少时间,Recoil 倒是上手挺容易的。

大家现在都用啥?或者说公司都用啥?是跟上生态脚步,还是停留在老的?

21136 次点击
所在节点    React
144 条回复
nzbin
2022-05-06 12:58:33 +08:00
@beginor 招 JS 基础好的就行,我以前的邻居部门用 vue ,一个季度也说找不到人😂
FightPig
2022-05-06 14:09:41 +08:00
@um1ng react 一直没有官方统一的一套,不像 vue ,几乎全是官方统一好一套,拿来就用,react-router 以前更新着,就不兼容了,所以,我一直主要用 vue ,现在不清楚啥情况
FightPig
2022-05-06 14:12:05 +08:00
@dk7952638 svelte 的 ui 有推荐的吗
pythonee
2022-05-06 14:14:45 +08:00
这么复杂了吗
mknightoy
2022-05-06 14:31:25 +08:00
进来一看各种名词铺面而来,阿巴阿巴阿巴
isukkaw
2022-05-06 15:11:46 +08:00
@SolidZORO #61

我知道你说的问题是啥,不用你再描述一遍。

const [isOpen, setIsOpen] = useAtom(atomA);
const [isVisible, setIsVisible] = useAtom(atomA);

不论你的 getter 和 setter 是什么名字,你用的都是同一个 atomA 。并不是因为你 useAtom 两次,这俩 atomA 就不一样了。这两个 atomA 的引用是相同的。

所以你要通过 atomA 去找所有的 usage 。VSCode 就有提供寻找变量的声明和所有引用的功能。如果 IDEA 没有,说明 IDEA 并不适合拿来写 JavaScript ,说明你应该抛弃 IDEA 了。
shabbyin
2022-05-06 15:28:07 +08:00
不看这个帖子还不知道有这么多状态库
简单项目我都是 useContext 一把梭
复杂的上个 redux ,加上 useDispatch 、useState 。。
Envov
2022-05-06 15:55:05 +08:00
@isukkaw jotai 和 zustand 真是好爽,少写好多样板代码
Valid
2022-05-06 16:02:57 +08:00
什么叫生态脚步,个人觉得还是 class component 好用,代码看着清晰,怎么喜欢怎么来
Leviathann
2022-05-06 16:29:58 +08:00
@Valid 但是类组件没法或者很难抽象和状态相关的逻辑
hooks 的 useMemo/Callback 和 async 一样会传染的确有点烦
Valid
2022-05-06 16:38:14 +08:00
@Leviathann 按照 react 官方的说法是后续可以在 class 中使用 hooks ,fb 还有那么多类不可能全部重写
yamedie
2022-05-06 16:52:28 +08:00
一个 VUEer 进来看了眼评论区, 一堆千奇百怪的库名, 仿佛看到一帮 REACTer 在尬舞... 舞得好... 有空我还是继续学学 svelte 吧 [doge]
yuthelloworld
2022-05-06 16:54:26 +08:00
@yamedie #112 这不是广大 reacter 搞出来的。国内很多 reacter 还是用 antd 全家桶。轮子多了也很烦。
junmoxiao
2022-05-06 16:55:53 +08:00
@zzlatan 不然 kpi 跟不上了
IvanLi127
2022-05-06 17:22:47 +08:00
@CodingNaux Angular 挺好的,用着也很爽啊,就是跳槽后,没公司用了。。。
serco
2022-05-06 17:29:56 +08:00
省流小助手:
React 生态里其他的工具其实不重要,主要的变革在于状态管理库的变化,大致可分为 3 个阶段

1. 一开始由 Flux 架构的开源实现流行起来的 Redux ,令人烦躁的点在于模板代码太多,后续的 RTK ( Redux Tool Kit )只能说是提供了一些类似语法糖 API 糖一样的做法来尽量减少模板代码,治标不治本。

2. 为了改进或者替代 Redux 的产品 mobx valtio(proxy state) zustand 等等,排名不分先后

3. Recoil/Jotai(Atom state) 主张状态从底往上组合,区别于 Redux 等工具的中心化然后再通过 reducer 自顶往下的做法; react-query 提出不应该是 global state ,应该是 server state + client state ,它负责解决 server state ,剩下的 client state 已经少得可怜,可自行选用工具解决
DICK23
2022-05-06 17:38:17 +08:00
mobx YYDS
agileago
2022-05-06 17:47:33 +08:00
@MartinAgerAdams 看了上面那么多名词,感觉好累啊, 不如来用我写的 vue3-oop( https://github.com/agileago/vue3-oop) vue3 + tsx + di(类似 angular)的,完全没有任何选择困难症,需要共享状态了,就直接从上层服务注入状态,我都没明白为啥会出现这么多状态管理库? 共享状态本质上不就是要解决 2 个问题么,

1. 跨组件使用同一状态
2. 状态与状态之间有依赖

- 针对第一个问题无非就是下层组件要使用上层组件的状态,直接依赖注入进去
- 第二个问题,解决依赖关系最经典的就是依赖注入容器了,把容器加进去不就解决了?

贴个简单的代码:

```tsx
// 共享状态以及状态依赖
@Injectable()
class S extends VueService {
constructor(private s2: S2) {
super()
}

@Mut() count = 1

removeAge() {
this.s2.age--
}
}
// 被依赖服务
class S2 extends VueService {
@Mut() age = 18
}

// 父组件
@Component()
class Parent extends VueComponent {
constructor(private s: S) {
super()
}

render() {
const { s } = this
return (
<div onClick={() => s.count++}>
{s.count}
<Child></Child>
</div>
)
}
}

// 子组件
@Component()
class Child extends VueComponent {
constructor(@SkipSelf() private s: S) {
super()
}

render() {
const { s } = this
return <div onClick={() => s.count++}>{s.count}</div>
}
}
```
bthulu
2022-05-06 17:56:48 +08:00
@agileago 装饰器语法被绝大多数 js 开发者视为洪水猛兽, 注定是不会流行的
dcsuibian
2022-05-06 17:56:57 +08:00
@yuthelloworld 我的感觉:
其实如果是公司项目的话,就 antd 全家桶、umi 、dva 啥的就好了。阿里怎么来我就怎么来,资料多、别人也好接手。跟不跟,用什么都无所谓,反正大厂选了,停止维护吃亏得也不止我。
但想写 React 个人项目的时候就比较纠结了,因为个人不做管理系统,antd 就不用了,用不上 umi 那一套。而且框架选择可以更激进,更注重开发体验,就很纠结用啥。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/850921

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX