jotai

jotai

React原子化状态管理库,适用于各类应用

Jotai是一个轻量级的React状态管理库,核心API仅2kb。它采用原子化的状态管理方式,支持从基础组件到复杂TypeScript应用的各种场景。Jotai提供派生状态和异步操作功能,无需使用字符串键,API设计简洁。该库为现代React应用提供了灵活高效的状态管理解决方案。

JotaiReact状态管理原子化状态派生原子异步操作Github开源项目
<br>

Jotai (浅色模式) Jotai (深色模式)

<br>

访问 jotai.org 或运行 npm i jotai

构建状态 构建大小 版本 下载量 Discord Open Collective

Jotai 可以从简单的 useState 替代方案扩展到企业级 TypeScript 应用。

  • 极简核心 API(2kb)
  • 众多实用工具和扩展
  • 无字符串键(相比 Recoil)

示例:演示1 | 演示2

首先,创建一个原始 atom

atom 代表一个状态片段。你只需要指定一个初始值,可以是字符串和数字等原始值,也可以是对象和数组。你可以创建任意多个原始 atom。

import { atom } from 'jotai' const countAtom = atom(0) const countryAtom = atom('日本') const citiesAtom = atom(['东京', '京都', '大阪']) const mangaAtom = atom({ '龙珠': 1984, '海贼王': 1997, 火影忍者: 1999 })

在组件中使用 atom

它的用法类似于 React.useState

import { useAtom } from 'jotai' function Counter() { const [count, setCount] = useAtom(countAtom) return ( <h1> {count} <button onClick={() => setCount((c) => c + 1)}>加一</button> ...

创建具有计算值的派生 atom

通过传递一个读取函数作为第一个参数,可以从现有的 atom 创建一个新的只读 atom。get 允许你获取任何 atom 的上下文值。

const doubledCountAtom = atom((get) => get(countAtom) * 2) function DoubleCounter() { const [doubledCount] = useAtom(doubledCountAtom) return <h2>{doubledCount}</h2> }

从多个 atom 创建一个 atom

你可以组合多个 atom 来创建一个派生 atom。

const count1 = atom(1) const count2 = atom(2) const count3 = atom(3) const sum = atom((get) => get(count1) + get(count2) + get(count3))

或者如果你喜欢函数式编程模式...

const atoms = [count1, count2, count3, ...otherAtoms] const sum = atom((get) => atoms.map(get).reduce((acc, count) => acc + count))

派生异步 atom <img src="https://img.shields.io/badge/-需要_suspense-black" alt="需要 suspense" />

你也可以将读取函数设为异步函数。

const urlAtom = atom('https://json.host.com') const fetchUrlAtom = atom(async (get) => { const response = await fetch(get(urlAtom)) return await response.json() }) function Status() { // 在 urlAtom 更改并且上面的异步函数完成后重新渲染组件 const [json] = useAtom(fetchUrlAtom) ...

你可以创建一个可写的派生 atom

在第二个参数中指定一个写入函数。get 将返回 atom 的当前值。set 将更新 atom 的值。

const decrementCountAtom = atom( (get) => get(countAtom), (get, set, _arg) => set(countAtom, get(countAtom) - 1) ) function Counter() { const [count, decrement] = useAtom(decrementCountAtom) return ( <h1> {count} <button onClick={decrement}>减少</button> ...

只写派生 atom

只需不定义读取函数。

const multiplyCountAtom = atom(null, (get, set, by) => set(countAtom, get(countAtom) * by), ) function Controls() { const [, multiply] = useAtom(multiplyCountAtom) return <button onClick={() => multiply(3)}>三倍</button> }

异步操作

只需将写入函数设为异步函数,并在准备好时调用 set

const fetchCountAtom = atom( (get) => get(countAtom), async (_get, set, url) => { const response = await fetch(url) set(countAtom, (await response.json()).count) } ) function Controls() { const [count, compute] = useAtom(fetchCountAtom) return ( <button onClick={() => compute('http://count.host.com')}>计算</button> ...

链接

编辑推荐精选

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

即梦AI

即梦AI

一站式AI创作平台

提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作

扣子-AI办公

扣子-AI办公

AI办公助手,复杂任务高效处理

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
下拉加载更多