@effectionx/signals

中文文档
0.5.4发布于 2026/06/17MITTypeScriptES Module构建来源已验证近 30 天下载 5.2万

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

中文使用文档
文档目录6 节
  1. 关于
  2. 包含在这个软件包中
  3. 布尔信号
  4. 阵列信号
  5. 帮助者
  6. 实值

信号

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

关于

一种思考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操作设计的地方组成 比较容易组成同步。 因为他们的模样,它应该成为 没有猜测他们会分享国家管理模式。 反应上下文 效果背景就是一个例子,但好处是 单向数据流动 提供构成是另一种.

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

包含在这个软件包中

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

布尔信号

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

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 信号在操作中为例,请检查 水龙头

阵列信号

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

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
});

以矩阵符号为例,请检查 阀门 财务报告和审定财务报表 批次 溪流帮助器.

帮助者

实值

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

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

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 共发布 10 个版本,首次发布于 2025/08/08;过去 12 个月发布了 7 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.5.4latest2026/06/174 个月前
0.5.32026/03/237 个月前
0.5.22026/02/248 个月前
0.5.12026/02/129 个月前
0.5.02026/01/199 个月前
0.4.12025/12/0811 个月前

关于 @effectionx/signals 的常见问题

@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 和提交记录判断。