# @effectionx/signals 中文文档

规范地址：https://npmcn.com/package/%40effectionx/signals/

版本：0\.5\.4
npm 元数据更新时间：2026-09-30T21:08:27.746Z
中文译文更新时间：2026-11-13T08:26:34.088Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：92.3 kB，37 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：1 个
- peer 依赖：effection ^3 \|\| ^4
- 首次发布：2025-08-08T13:39:42.756Z
- 最新版本发布：2026-06-16T16:32:04.149Z
- 近 30 天下载量：51848（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：10（近 12 个月 7 个）

## 中文简介

效果操作的反射信号和计算值

## 安装

```sh
npm install @effectionx/signals
```

也可以使用：`pnpm add @effectionx/signals`、`yarn add @effectionx/signals`、`bun add @effectionx/signals`

## README

# 信号

为原始数据类型收集不可改变的状态容器.

## 关于

一种思考Evicion操作的方法是作为可相容的组件 {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}Ayncrony. {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}我就是这个意思 它们在概念上与React组件相似,因为它们是 用于引用其他函数的函数。 和 React 组件树一样, 效果 操作被安排在一个操作树上。 反应组件设计为 使DOM更容易在Effection操作设计的地方组成 比较容易组成同步。 因为他们的模样,它应该成为 没有猜测他们会分享国家管理模式。 反应上下文 效果背景就是一个例子,但好处是 [单向数据流动](https://en.wikipedia.org/wiki/Unidirectional_data_flow) 提供构成是另一种.

在Redux等工具中,Flux模式是“经典”方式 在React应用程序中执行一个方向数据。 这些年来 在各种UI中执行的信号 框架。 JavaScript生态系统中的信号设计假设它们 将纳入一些UI框架。 效果提供必要的 具有强大而简单的执行信号的组件 需要一个UI框架.

### 包含在这个软件包中

此包中包含的信号集依赖于 Effection 的信号 界面,以提供一些操作的不可变值流。 每个信号 包含 `set`, (中文(简体) ), `update` 财务报告和审定财务报表 `valueOf` 方法。 。 。 每个数据类型还包括: 该数据类型的原始版本提供的方法。 譬如说, 矩阵符号提供 `push` 财务报告和审定财务报表 `shift`设定提供 `difference`我们 不执行所有的方法, 大部分是因为不需要所有的方法. 如果你需要我们没有执行的方法... ...但是它可以在.. 发作类型,请创建PR. 如果你需要别的东西,使用 `update` 方法.

### 布尔信号

布尔信号提供了布尔值的流. 您可以设置值 这将导致将新值发送到流中.

```ts
import { each, run, spawn } from "effection";
import { createBooleanSignal } from "@effectionx/signals";

await run(function* () {
  const boolean = yield* createBooleanSignal(true);

  yield* spawn(function* () {
    for (const update of yield* each(boolean)) {
      console.log(update);
      yield* each.next();
    }
  });

  boolean.set(false); // this will send false to the stream
  boolean.set(true); // this will send true to the stream
  boolean.set(true); // this won't send anything since the value hasn't changed
});
```

以 Boolean 信号在操作中为例,请检查 [水龙头](https://github.com/thefrontside/effectionx/blob/main/stream-helpers/test-helpers/faucet.ts)

### 阵列信号

阵列信号提供了阵列值的流. 值为 被认为是不可改变的 - 您不应该修改通过 ,相反,在信号上引用方法导致发送新的值.

```ts
import { each, run, spawn } from "effection";
import { createArraySignal } from "@effectionx/signals";

await run(function* () {
  const array = yield* createArraySignal<number>([]);

  yield* spawn(function* () {
    for (const update of yield* each(array)) {
      console.log(update);
      yield* each.next();
    }
  });

  array.push(1, 2, 3); // this will be a single update
});
```

以矩阵符号为例,请检查 [阀门](https://github.com/thefrontside/effectionx/blob/main/stream-helpers/valve.ts) 财务报告和审定财务报表 [批次](https://github.com/thefrontside/effectionx/blob/main/stream-helpers/batch.ts) 溪流帮助器.

## 帮助者

### 实值

`is` 帮助返回当流值完成的操作 与上游相匹配。 需要等待信号才能进入 具体状态。 一些常用例正在等待一个数组到达 给定长度或布尔信号变为真或假.

`is` 观察信号的当前状态 以及任何匹配的变化,所以它 完成确定性 生产者不必 `yield` 或者说 `sleep` 发表前。 它在检查当前数据之前先确定订阅日期 值,所以一个匹配的更新,当它开始等待的时候, 土地就永远不会 输了.

```ts
import { run, spawn } from "effection";
import { createBooleanSignal, is } from "@effectionx/signals";

await run(function* () {
  const open = yield* createBooleanSignal(false);

  yield* spawn(function* () {
    yield* is(open, (open) => open === true);
    console.log("floodgates are open!");
  });

  // No sleep or yield needed before publishing.
  open.set(true);
});
```

## 常见问题

### @effectionx/signals 是什么？

效果操作的反射信号和计算值

### 如何安装 @effectionx/signals？

在项目目录运行 npm install @effectionx/signals，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：effection（^3 \|\| ^4）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @effectionx/signals 支持 TypeScript 吗？

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

### @effectionx/signals 支持 ESM 还是 CommonJS？

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

### @effectionx/signals 可以商用吗？

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

### @effectionx/signals 的下载量有多少？

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

### @effectionx/signals 还在维护吗？

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

