
文章插图
当然通过 useRecoilValueLoadable 来消费异步状态,比较符合我们当前的习惯 。但 Recoil 更推荐通过 React.Suspense 来消费异步状态,这里就仁者见仁了,虽然 Suspense 可能是方向,但用起来是还不太习惯 。
const UserName = () => { const userName = useRecoilValue(currentUserNameQuery); return <>{userName}</> }};function MyApp() { return ( <React.Suspense fallback={<div>Loading...</div>}> <UserName /> </React.Suspense> );} 评价优点
- 之前状态管理器满天飞,如果官方能一统天下,应该算一件好事情 。
- 对 React concurrent 模式支持良好 。
1. 没有使用 ts 实现,目前不支持 ts这点我很惊讶,也是写这个文章的时候才发现的,很奇怪 。讲道理 Recoil 支持 typescript 应该是顺手的事情,可能后期需要来个 @types/recoil 吧 。
2. 目前没有支持 Class 组件消费状态 。这个特性应该是必备的,应该不会彻底抛弃 Class 组件 。估计下个版本肯定会支持的这个特性的 。实现成本较低,不支持的话就太反人类了 。
3. API 偏多,有一定上手成本 。

文章插图
各类 API 一共有 19 个,偏复杂了 。感觉很多都是可以合并的,比如 atom 和 selector 合并成一个等等(也可能是我考虑不成熟) 。建议官方可以考虑精简精简,本来是一个很简单的东西,搞的太复杂了 。
4. 消费较繁琐我们需要消费一个状态的时候,需要 import 两个东西,比较繁琐 。
import { useRecoilState } from "recoil";import { inputValueState } from "../store";// 用法useRecoilState(inputValueState);本来应该可以直接通过字符串 key 消费的,但这样和 redux 问题一样了,无法支持 ts 。import { useRecoilState } from "recoil";useRecoilState('inputValueState');无论如果,import 两个东西不是一个好的用法 。5. 没有足够的亮点没有看到让人眼前一亮的东西,没有使用冲动 。静观发展~
后记Recoil 整体看下来,比较中庸,需要静观发展 。另外推荐一下我目前正在用的最简单的 React 状态管理器 hox[5],只有一个 API,非常符合直觉,没有任何上手成本,完全拥抱 Hooks。
推荐阅读
- 深入浅出Spring/SpringBoot 事件监听机制
- 汽车|油价大降!加满一箱油将少花21.5元 会继续降吗?官方回应
- 深入理解PHP+Mysql分布式事务与解决方案
- 天文航天|英雄回家!官方:神舟十三号即将撤离空间站
- 店侦探淘宝官方下载 淘宝店侦探手机版下载
- 官方淘宝收藏大师有用吗 淘宝怎么样收藏店铺
- 淘宝怎样安装店侦探 店侦探淘宝官方下载
- 生意参谋官方入口 生意参谋网页版
- 深入浅出为什么你的网页需要CSP?【前端篇】
- 架构师修炼之微服务部署 - 深入理解Docker镜像
