# @ariakit/store 中文文档

规范地址：https://npmcn.com/package/%40ariakit/store/

版本：0\.1\.11
npm 元数据更新时间：2026-10-14T08:56:47.795Z
中文译文更新时间：2026-11-06T18:47:12.555Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40ariakit/store
原文对照：https://npmcn.com/package/%40ariakit/store/?lang=original
项目主页：https://ariakit.com/
源码仓库：https://github.com/ariakit/ariakit

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：113 kB，9 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2026-05-23T13:46:12.690Z
- 最新版本发布：2026-10-14T08:56:47.352Z
- 近 30 天下载量：3437498（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：12（近 12 个月 12 个）

## 中文简介

Ariakit 商店公用事业

## 安装

```sh
npm install @ariakit/store
```

也可以使用：`pnpm add @ariakit/store`、`yarn add @ariakit/store`、`bun add @ariakit/store`

## README

# @ ariakit/ 仓库

**重要内容:** 这个软件包是实验性的,并不遵循语义化的版本,意思是断裂变化可能发生在补丁和小版本中.

Ariakit软件包所使用的框架-不可知存储原始.

## 目录

-   [安装](https://npmcn.com/package/%40ariakit/store/#readme-installation)
-   [使用量](https://npmcn.com/package/%40ariakit/store/#readme-usage)
-   [API 参考](https://npmcn.com/package/%40ariakit/store/#readme-api-reference)

## 安装

```sh
npm i @ariakit/store
```

## 使用量

从软件包根导入商店助手 :

```ts
import { createStore } from "@ariakit/store";
```

这一一揽子方案只采用无害环境管理,并暴露出单一的公众切入点.

## API 参考

-   [`createStore`](https://npmcn.com/package/%40ariakit/store/#readme-createstore)
-   [`setup`](https://npmcn.com/package/%40ariakit/store/#readme-setup)
-   [`init`](https://npmcn.com/package/%40ariakit/store/#readme-init)
-   [`subscribe`](https://npmcn.com/package/%40ariakit/store/#readme-subscribe)
-   [`sync`](https://npmcn.com/package/%40ariakit/store/#readme-sync)
-   [`batch`](https://npmcn.com/package/%40ariakit/store/#readme-batch)
-   [`omit`](https://npmcn.com/package/%40ariakit/store/#readme-omit)
-   [`pick`](https://npmcn.com/package/%40ariakit/store/#readme-pick)
-   [`mergeStore`](https://npmcn.com/package/%40ariakit/store/#readme-mergestore)
-   [`throwOnConflictingProps`](https://npmcn.com/package/%40ariakit/store/#readme-throwonconflictingprops)
-   [`State`](https://npmcn.com/package/%40ariakit/store/#readme-state)
-   [`StoreOptions`](https://npmcn.com/package/%40ariakit/store/#readme-storeoptions)
-   [`StoreProps`](https://npmcn.com/package/%40ariakit/store/#readme-storeprops)
-   [`StoreState`](https://npmcn.com/package/%40ariakit/store/#readme-storestate)
-   [`Store`](https://npmcn.com/package/%40ariakit/store/#readme-store)

### `createStore`

```ts
function createStore<S extends State>(
  initialState: S,
  ...stores: Array<Store<Partial<S>> | undefined>
): Store<S>;
```

创建商店.

[回到顶部](https://npmcn.com/package/%40ariakit/store/#readme-api-reference)

### `setup`

```ts
type StoreSetup = (callback: () => void | (() => void)) => () => void;

function setup<T extends Store>(
  store?: T | null,
  ...args: Parameters<StoreSetup>
): T extends Store ? ReturnType<StoreSetup> : void;
```

注册一个在商店初始化时称为回调函数.

[回到顶部](https://npmcn.com/package/%40ariakit/store/#readme-api-reference)

### `init`

```ts
type StoreInit = () => () => void;

function init<T extends Store>(
  store?: T | null,
  ...args: Parameters<StoreInit>
): T extends Store ? ReturnType<StoreInit> : void;
```

当商店初始化时应该调用的函数 .

[回到顶部](https://npmcn.com/package/%40ariakit/store/#readme-api-reference)

### `subscribe`

```ts
type Listener<S> = (state: S, prevState: S) => void | (() => void);

type Sync<S, K extends keyof S> = (
  keys: K[] | null,
  listener: Listener<Pick<S, K>>,
) => () => void;

type StoreSubscribe<S = State, K extends keyof S = keyof S> = Sync<S, K>;

function subscribe<T extends Store, K extends keyof StoreState<T>>(
  store?: T | null,
  ...args: Parameters<StoreSubscribe<StoreState<T>, K>>
): T extends Store ? ReturnType<StoreSubscribe<StoreState<T>, K>> : void;
```

注册一个在商店中状态变化后称为听众函数 .

[回到顶部](https://npmcn.com/package/%40ariakit/store/#readme-api-reference)

### `sync`

```ts
type Listener<S> = (state: S, prevState: S) => void | (() => void);

type Sync<S, K extends keyof S> = (
  keys: K[] | null,
  listener: Listener<Pick<S, K>>,
) => () => void;

type StoreSync<S = State, K extends keyof S = keyof S> = Sync<S, K>;

function sync<T extends Store, K extends keyof StoreState<T>>(
  store?: T | null,
  ...args: Parameters<StoreSync<StoreState<T>, K>>
): T extends Store ? ReturnType<StoreSync<StoreState<T>, K>> : void;
```

当存储状态发生变化时,立即并同步注册一个声音器函数.

[回到顶部](https://npmcn.com/package/%40ariakit/store/#readme-api-reference)

### `batch`

```ts
type Listener<S> = (state: S, prevState: S) => void | (() => void);

type Sync<S, K extends keyof S> = (
  keys: K[] | null,
  listener: Listener<Pick<S, K>>,
) => () => void;

type StoreBatch<S = State, K extends keyof S = keyof S> = Sync<S, K>;

function batch<T extends Store, K extends keyof StoreState<T>>(
  store?: T | null,
  ...args: Parameters<StoreBatch<StoreState<T>, K>>
): T extends Store ? ReturnType<StoreBatch<StoreState<T>, K>> : void;
```

注册一个听众函数,该函数在商店的一批状态变化之后立即被调用.

[回到顶部](https://npmcn.com/package/%40ariakit/store/#readme-api-reference)

### `omit`

```ts
type StoreOmit<
  S = State,
  K extends ReadonlyArray<keyof S> = ReadonlyArray<keyof S>,
> = (keys: K) => Store<Omit<S, K[number]>>;

function omit<T extends Store, K extends ReadonlyArray<keyof StoreState<T>>>(
  store?: T | null,
  ...args: Parameters<StoreOmit<StoreState<T>, K>>
): T extends Store ? ReturnType<StoreOmit<StoreState<T>, K>> : void;
```

创建一个带有当前存储状态子集并保持同步的新商店.

[回到顶部](https://npmcn.com/package/%40ariakit/store/#readme-api-reference)

### `pick`

```ts
type StorePick<
  S = State,
  K extends ReadonlyArray<keyof S> = ReadonlyArray<keyof S>,
> = (keys: K) => Store<Pick<S, K[number]>>;

function pick<T extends Store, K extends ReadonlyArray<keyof StoreState<T>>>(
  store?: T | null,
  ...args: Parameters<StorePick<StoreState<T>, K>>
): T extends Store ? ReturnType<StorePick<StoreState<T>, K>> : void;
```

创建一个带有当前存储状态子集并保持同步的新商店.

[回到顶部](https://npmcn.com/package/%40ariakit/store/#readme-api-reference)

### `mergeStore`

```ts
function mergeStore<S extends State>(
  ...stores: Array<Store<S> | undefined>
): Store<S>;
```

将多家商店合并为一个商店.

[回到顶部](https://npmcn.com/package/%40ariakit/store/#readme-api-reference)

### `throwOnConflictingProps`

```ts
function throwOnConflictingProps(props: AnyObject, store?: Store): void;
```

当商店道具与默认状态相接时会抛出.

[回到顶部](https://npmcn.com/package/%40ariakit/store/#readme-api-reference)

### `State`

```ts
type State = AnyObject;
```

存储状态类型 .

[回到顶部](https://npmcn.com/package/%40ariakit/store/#readme-api-reference)

### `StoreOptions`

```ts
type StoreOptions<S extends State, K extends keyof S> = Partial<Pick<S, K>>;
```

初始状态,可以传递给存储创建函数.

[回到顶部](https://npmcn.com/package/%40ariakit/store/#readme-api-reference)

### `StoreProps`

```ts
interface StoreProps<S extends State = State> {
  /**
   * Another store object that will be kept in sync with the original store.
   *
   * Live examples:
   * - [Navigation Menubar](https://ariakit.com/examples/menubar-navigation)
   */
  store?: Store<Partial<S>>;
}
```

可以传递到存储创建函数的道具.

[回到顶部](https://npmcn.com/package/%40ariakit/store/#readme-api-reference)

### `StoreState`

```ts
type StoreState<T> = T extends Store<infer S> ? S : never;
```

从存储类型中提取状态类型.

[回到顶部](https://npmcn.com/package/%40ariakit/store/#readme-api-reference)

### `Store`

```ts
interface Store<S = State> {
  /**
   * Returns the current store state.
   */
  getState(): S;
  /**
   * Sets a state value.
   */
  setState<K extends keyof S>(key: K, value: SetStateAction<S[K]>): void;
}
```

存储.

[回到顶部](https://npmcn.com/package/%40ariakit/store/#readme-api-reference)

## 常见问题

### @ariakit/store 是什么？

Ariakit 商店公用事业

### 如何安装 @ariakit/store？

在项目目录运行 npm install @ariakit/store，或使用 pnpm add / yarn add / bun add。

### @ariakit/store 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @ariakit/store 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @ariakit/store 可以商用吗？

@ariakit/store 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @ariakit/store 的下载量有多少？

根据 npm 官方下载统计，@ariakit/store 在 2026/10/07 – 2026/11/05 这 30 天内被下载 3,437,498 次，日均约 114,583 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @ariakit/store 还在维护吗？

最新版本 0\.1\.11 发布于 2026/10/14（24 天前）；至今共发布 12 个版本，其中过去 12 个月发布了 12 个；首次发布于 2026/05/23。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

