You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

@cerebral/react

Package Overview
Dependencies
Maintainers
6
Versions
291
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@cerebral/react

React view for Cerebral

4.3.3
latest
Source
npmnpm
Version published
Weekly downloads
876
-21.29%
Maintainers
6
Weekly downloads
 
Created
Source

@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.

FAQs

Package last updated on 06 Jun 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts