@bigcommerce/data-store

中文文档
1.0.3发布于 2025/09/05MITTypeScriptCommonJS近 30 天下载 8965

用于管理应用程序状态的 JavaScript 库

中文使用文档
文档目录9 节
  1. 安装
  2. 所需资源
  3. 使用量
  4. 创建存储
  5. 更新当前状态
  6. 订阅更改
  7. 改变国家与行动
  8. 捐款
  9. 许可证

@ bigcommerce/ data- store (中文(简体) )

Build Status

一个用于管理应用程序状态的JavaScript库.

它帮助您在应用程序中执行单向数据流,允许您:

  • 订阅应用程序状态的更改
  • 以连续和不可改变的方式更新状态

安装

您可以使用 无。 。 。 .

npm install --save @bigcommerce/data-store

所需资源

这个图书馆需要 承诺多填充 如果您需要支持更旧的浏览器,例如 IE11.

您在使用此库时可能需要创建可观察文件( 请参见使用部分) 。 我们建议你使用 rxjs (韩语) 直到你本能创造它们的时候.

使用量

创建存储

import { createDataStore } from '@bigcommerce/data-store';

const reducer = (state, action) => {
    switch (action.type) {
    case 'INCREMENT':
        return { ...state, count: state.count + 1 };

    case 'UPDATE_COUNT':
        return { ...state, count: action.payload };

    default:
        return state;
    }
};

const initialState = { count: 0 };
const store = createDataStore(reducer, initialState);

更新当前状态

import { createAction } from '@bigcommerce/data-store';

store.dispatch(createAction('INCREMENT'));
store.dispatch(createAction('UPDATE_COUNT', 10)));

要同步更新状态, 您需要创建一个可观察到的, 以释放动作 :

import { Observable } from 'rxjs';

const action$ = Observable
    .ajax({ url: '/count' })
    .map(({ response }) => createAction('UPDATE_COUNT', response.count))

store.dispatch(action$);

为了避免种族条件,动作会在一个序列中被发出,除非您指定了不同的调度队列,即:

store.dispatch(action$);
store.dispatch(action$);

// The following call does not wait for the previous calls
store.dispatch(action$, { queueId: 'foobar' });

如果您想进入其它商店, 但无法直接进入商店( 即: 在动作创建者内部) , 请在关闭中将可观察到的东西包起来 :

// In an action creator
function updateAction() {
    return (store) => Observable
        .ajax({ url: '/count' })
        .map(({ response }) => {
            const { count } = store.getState();

            return createAction('UPDATE_COUNT', count + response.count);
        });
}
// In a component
store.dispatch(updateAction());

在同步发送后做一些事情:

const { state } = await store.dispatch(action$);

console.log(state);

订阅更改

更改并提供最新数据:

store.subscribe((state) => {
    console.log(state);
});

首次订阅时, 订阅者会被触发 。 除非数据有变化 否则它不会被触发.

要过滤无关的更改 :

// Only trigger the subscriber if `count` changes
store.subscribe(
    (state) => { console.log(state); },
    (state) => state.count
);

改变国家与行动

转换返回值 getState 或参数值 subscribe数字 :

const stateTransformer = (state) => ({ ...state, transformed: true });
const store = createDataStore(reducer, initialState, { stateTransformer });

console.log(store.getState()); // { count: 0, transformed: true }

改变已发送的行动:

const actionTransformer = (action) => ({ ...action, transformed: true });
const store = createDataStore(reducer, initialState, { actionTransformer });

console.log(store.dispatch(createAction('INCREMENT'))); // { type: 'INCREMENT', transformed: true }

捐款

要释放:

npm run release

查看其它可用的命令 :

npm run

许可证

麻省理工学院

版本与发布记录

@bigcommerce/data-store 共发布 14 个版本,首次发布于 2018/05/14;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.0.3latest2025/09/051.2 年前
1.0.22024/01/232 年前
1.0.12019/08/077 年前
1.0.02019/08/057 年前
0.2.72019/05/237 年前
0.2.62019/01/087 年前

关于 @bigcommerce/data-store 的常见问题

@bigcommerce/data-store 是什么?

用于管理应用程序状态的 JavaScript 库

如何安装 @bigcommerce/data-store?

在项目目录运行 npm install @bigcommerce/data-store,或使用 pnpm add / yarn add / bun add。

@bigcommerce/data-store 支持 TypeScript 吗?

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

@bigcommerce/data-store 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@bigcommerce/data-store 可以商用吗?

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

@bigcommerce/data-store 的下载量有多少?

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

@bigcommerce/data-store 还在维护吗?

最新版本 1.0.3 发布于 2025/09/05(1.2 年前);至今共发布 14 个版本,其中过去 12 个月发布了 0 个;首次发布于 2018/05/14。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。