@dcl/react-ecs

中文文档
7.33.0发布于 2026/11/06Apache-2.0TypeScriptCommonJS构建来源已验证近 30 天下载 1.3万

权力下放

中文使用文档
文档目录12 节
  1. 特征
  2. 组成部分准则
  3. 安装
  4. 基本用途
  5. 主题系统
  6. 构成部分
  7. 核心组成部分
  8. 布局系统
  9. 事件处理
  10. 技术细节
  11. 相关文档
  12. 许可证

@dcl/ react-ecs (英语)

对Decentrand的实体组件系统(ECS)的回放装订,提供了使用React组件模型和JSX语法在Decentrand场景中构建UI的宣示方式.

特征

  • 基于 Flexbox 的布局: 执行 CSS Flexbox 的子集,用于强大的和直观的UI布局
  • 反应组件: 用于构建 UI 的类似 Familier React 组件 API
  • 类型安全: 带有适当类型定义的完整类型脚本支持
  • 事件处理: 支持鼠标事件和用户交互
  • 业绩: 优化最低运行时间间接费用的调节
  • 主题支持: 内置有上下文切换的光和暗主题系统

组成部分准则

@dcl/react-ecs中的所有组件必须:

  • 归还JSX。 一致性和可替换性要素
  • 通过背景整合支持主题
  • 可重复使用,可与其它部件相混合

安装

npm install @dcl/react-ecs

基本用途

import { ReactEcs, UiEntity, Label, Button } from '@dcl/react-ecs'

export function MyUI() {
  return (
    <UiEntity
      uiTransform={{
        width: 300,
        height: 100,
        display: 'flex',
        justifyContent: 'center',
        alignItems: 'center'
      }}
    >
      <Label value="Hello Decentraland!" />
      <Button value="Click Me!" onMouseDown={() => console.log('clicked!')} />
    </UiEntity>
  )
}

主题系统

软件包包括一个主题系统,用于一致的UI样式:

import { ReactEcs, ThemeProvider, Button } from '@dcl/react-ecs'

// Wrap your UI with ThemeProvider
export function MyUI() {
  return (
    <ThemeProvider>
      <Button value="Theme-Aware Button" />
    </ThemeProvider>
  )
}

// Use themes in custom components
function CustomComponent() {
  const { theme, toggleTheme } = React.useContext(ThemeContext)

  return (
    <UiEntity
      uiBackground={{
        color: theme === 'light' ? '#FFFFFF' : '#000000'
      }}
      onMouseDown={toggleTheme}
    />
  )
}

构成部分

核心组成部分

  • 用户实体: UI 元素的基础组件
  • 标签: 文本显示组件
  • 按钮: 交互式按钮组件
  • 投入: 文本输入字段
  • 下坠: 选择下拉菜单

布局系统

版式系统以Flexbox为基础,支持以下属性: 1

  • display: 'flex'
  • flexDirection: 'row' | 'column'
  • justifyContent: 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around'
  • alignItems: 'flex-start' | 'center' | 'flex-end' | 'stretch'
  • width, (中文(简体) ), height
  • margin, (中文(简体) ), padding
  • positionType: 'absolute' | 'relative'

事件处理

组件支持以下鼠标事件 :

<Button onMouseDown={() => {}} onMouseUp={() => {}} onMouseEnter={() => {}} onMouseLeave={() => {}} />

技术细节

该套件执行自定义的React调和器,将React的组件模型与Decentrand的ECS相接. 它会:

  1. 将JSX翻译成ECS实体和组成部分
  2. 管理组件生命周期和更新
  3. 处理活动 代表团和吹嘘
  4. 提供表演者更新机制

关于UI系统架构和设计决定的更详细信息:

许可证

Apache 2.0 (英语)

版本与发布记录

@dcl/react-ecs 共发布 1,298 个版本,首次发布于 2022/09/12;过去 12 个月发布了 318 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
7.33.0latest2026/11/066 天前
7.32.1-42077145652.commit-f6053ef2026/11/066 天前
7.32.1-42074770886.commit-f6053ef2026/11/066 天前
7.32.1-41691874543.commit-3063788auth-server2026/11/047 天前
7.31.1-41669733463.commit-b1b1d792026/11/048 天前
7.32.02026/11/048 天前

其他发布通道:ci → 7.8.16,protocol-squad → 7.25.1-30828532396.commit-0c215c3,experimental → 7.27.1-34382248832.commit-ca3b679,experimental-bevy → 7.31.1-40604676255.commit-cb3ed84,experimental-bevy-auth-server → 7.31.1-40606969412.commit-24c05c3,auth-server → 7.32.1-41691874543.commit-3063788。

关于 @dcl/react-ecs 的常见问题

@dcl/react-ecs 是什么?

权力下放

如何安装 @dcl/react-ecs?

在项目目录运行 npm install @dcl/react-ecs,或使用 pnpm add / yarn add / bun add。

@dcl/react-ecs 支持 TypeScript 吗?

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

@dcl/react-ecs 支持 ESM 还是 CommonJS?

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

@dcl/react-ecs 可以商用吗?

@dcl/react-ecs 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@dcl/react-ecs 的下载量有多少?

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

@dcl/react-ecs 还在维护吗?

最新版本 7.33.0 发布于 2026/11/06(6 天前);至今共发布 1298 个版本,其中过去 12 个月发布了 318 个;首次发布于 2022/09/12。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。