@cerebral/react

中文文档
5.0.0发布于 2026/03/20MITTypeScriptCommonJS构建来源已验证近 30 天下载 1.4万

React view for Cerebral

原始使用文档
文档目录8 节
  1. Install
  2. Container
  3. connect
  4. Function Components (Recommended)
  5. Class Components
  6. Dynamic Dependencies
  7. Props Transformer
  8. TypeScript Support

@cerebral/react

React view integration for Cerebral state management.

Install

npm install @cerebral/react react react-dom

Container

The Container component connects your Cerebral app to your React components:

import React from 'react'
import { createRoot } from 'react-dom/client'
import App from 'cerebral'
import { Container } from '@cerebral/react'
import AppComponent from './components/App'
import main from './main'

const app = App(main)

const root = createRoot(document.querySelector('#app'))
root.render(
  <Container app={app}>
    <AppComponent />
  </Container>
)

connect

The connect function binds Cerebral state and sequences to your React components:

import React from 'react'
import { state, sequences } from 'cerebral'
import { connect } from '@cerebral/react'

export default connect(
  {
    foo: state`foo`,
    onClick: sequences`onClick`
  },
  function MyComponent({ foo, onClick }) {
    return <div onClick={() => onClick()}>{foo}</div>
  }
)

Class Components

import React from 'react'
import { state, sequences } from 'cerebral'
import { connect } from '@cerebral/react'

export default connect(
  {
    foo: state`foo`,
    onClick: sequences`onClick`
  },
  class MyComponent extends React.Component {
    render() {
      const { foo, onClick } = this.props
      return <div onClick={() => onClick()}>{foo}</div>
    }
  }
)

Dynamic Dependencies

You can dynamically access cerebral state and sequences inside components without pre-declaring them:

import React from 'react'
import { state, sequences } from 'cerebral'
import { connect } from '@cerebral/react'

export default connect(function MyComponent({ get }) {
  const foo = get(state`foo`)
  const onClick = get(sequences`onClick`)

  return <div onClick={() => onClick()}>{foo}</div>
})

Props Transformer

You can transform props before they reach your component by adding a transformer function:

import React from 'react'
import { sequences, state } from 'cerebral'
import { connect } from '@cerebral/react'

export default connect(
  // 1. Define cerebral dependencies
  {
    foo: state`app.foo`,
    onClick: sequences`app.onClick`
  },
  // 2. Transform props before they reach the component
  (cerebralProps, componentProps, get) => {
    return {
      foo: `Label: ${cerebralProps.foo}`,
      onClick: () => cerebralProps.onClick({ id: componentProps.id })
    }
  },
  // 3. Your component receives the transformed props
  function App({ foo, onClick }) {
    return <div onClick={onClick}>{foo}</div>
  }
)

The transformer function takes three arguments:

  • cerebralProps: Values from your Cerebral state and sequences
  • componentProps: Props passed from parent components
  • get: Function to resolve Cerebral tags and computed values

TypeScript Support

For TypeScript users, you can add static typing to your connected components. See the TypeScript documentation for details.

版本与发布记录

@cerebral/react 共发布 294 个版本,首次发布于 2017/09/04;过去 12 个月发布了 3 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
5.0.0latest2026/03/207 个月前
5.0.0-1773966503162next2026/03/207 个月前
5.0.0-17739658710852026/03/207 个月前
4.3.32025/06/061.4 年前
4.3.3-17491982820702025/06/061.4 年前
4.3.22025/03/261.6 年前

其他发布通道:canary → 4.0.0-1527708491686,next → 5.0.0-1773966503162。

关于 @cerebral/react 的常见问题

@cerebral/react 是什么?

React view for Cerebral

如何安装 @cerebral/react?

在项目目录运行 npm install @cerebral/react,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(>=16.3.0 <20.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@cerebral/react 支持 TypeScript 吗?

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

@cerebral/react 支持 ESM 还是 CommonJS?

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

@cerebral/react 可以商用吗?

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

@cerebral/react 的下载量有多少?

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

@cerebral/react 还在维护吗?

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