Skip to content

Recoil 系列教程,学习和探索新一代 React 状态库。

Notifications You must be signed in to change notification settings

puxiao/recoil-tutorial

Repository files navigation

recoil-tutorial

Recoil 系列教程,学习和探索新一代 React 状态库。


以下内容更新于 2022.12.24


最近在一个项目中使用了 Recoil 作为状态管理库,但是开发一半时发现使用 Recoil 遇到了很多困境。

Recoil 的一个核心原则是 “数据状态原子化,即数据最小不可分割”。这就导致在面对更新维护一个比较复杂的对象时 Recoil 显得捉襟见肘。

强烈推荐另外一个状态管理库:zustand

zustand:https://github.com/pmndrs/zustand

可以说 zustand 是目前 React 中最好的状态管理库,没有之一。

推荐 zustand 的理由:

  • zustand 具备了 Recoil、Jotai 这些状态管理库所有的优点

  • zustand 学习和使用 甚至比 Recoil 还更简单

  • zustand 在面对管理复杂对象状态时,无比灵活,游刃有余

  • zustand 不仅可以在钩子组件中使用,还可以在类组件中使用,甚至 React 组件之外 (普通 JS) 也可以使用。

    (你没看错,就是这么不可思议)

假设你还未开始学习 Recoil,我建议你简单看一下 Recoil 即可,转而学习使用 zustand 吧。


以上内容更新于 2022.12.24



本教程的背景和初衷

本人背景

本人已学习使用 React 已有一年多,但实际做的项目并不多,且也相对比较简单,所以我从未曾学习或使用过任何第三方 React 状态库,例如:Redux、MobX 等。

对于 React 状态管理,我之前使用的是:useContext + useReducer。


我对 Redux 的学习难度早有耳闻,并且我对 Redux 有抵触情绪,我始终觉得 Redux 是类组件时期的产物,而我更习惯使用函数组件。


本教程初衷

最近我正在开发一个比较复杂的 React 项目,所以需要用到专业的状态库。

恰好此时,我听说了 Recoil ,所以计划从今天( 2021.05.14 ) 开始学习和使用 Recoil。

通过教别人的方式来记录自己的学习过程,这就是本教程的初衷。

我用我的理解、我的语言来讲解 Recoil,希望给同样想学习 Recoil 的你提供一些参考。


实际上 Recoil 并不复杂,我更加推荐的是直接去官网查看和学习。

Recoil简体中文官网地址: https://recoiljs.org/zh-hans/


文章目录


我认为本教程中,真正有价值的是 02 Recoil 的理念和特性,当你理解 Recoil 的理念(运行逻辑)后,实际使用过程中哪个函数不会直接去看官方 API 文档就好了。


补充说明

补充说明 1:

本教程的示例使用 Create-React-App 4.0.3 版本创建的 React 项目:

  • React 版本为 17.0.2
  • TypeScript 版本为 4.1.2

如果你不会 TypeScript,可能阅读示例代码时,略微有些困难。


补充说明 2:

由于 Recoil 是针对 React Hooks 函数组件而产生的,所以如果你使用的是 类组件,那么你需要先学习 React Hooks,学完后再来看本教程。


关于 React Hooks,可以查阅我一年前写的 Hooks 教程:

react-hook-tutorial:https://github.com/puxiao/react-hook-tutorial

尽管该教程是 1 年前写的,但是最近 1 年 react hooks 并未发生任何使用上的变化,所以该教程依然不过时,可以放心阅读。


补充说明 3:

尽管现阶段非常推荐 Recoil,但是大家也不要忘了,还有世界上还有另外一个 React 状态管理库:jotai

jotai 和 recoil 非常类似,且 jotai 有自己的特有优势:jotai 的 API 名称比 recoil 更短,更好记。

关于 API 名称这一点,可以查看本教程中的最后一篇 05 Recoil 钩子函数(hooks) 名称的讨论


信息反馈

若有错误欢迎指正,本人微信同QQ(78657141),或通过邮件联系:yangpuxiao@gmail.com

本教程在 Github 中的地址为:https://github.com/puxiao/recoil-tutorial

About

Recoil 系列教程,学习和探索新一代 React 状态库。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published