cycle-react-pragma
TypeScript icon, indicating that this package has built-in type declarations

0.1.0 • Public • Published

cycle-react-pragma

A jsx pragma for @cycle/react

Motivation

Although JSX only has secondary support in Cycle.js, it is highly familiar to users of React.

Recently, it was made possible to render React components in Cycle and vice versa.

This pragma allows you to use React-style JSX when rendering React components in Cycle.js

Installation

yarn add cycle-react-pragma

Babel

Add the following to your webpack config:

module: {
  rules: [
    {
      test: /\.jsx?$/,
      loader: 'babel-loader',
      options: {
        plugins: [
          ['transform-react-jsx', { pragma: 'CycleReactPragma.createElement' }],
        ]
      }
    }
  ]
},

If you used create-cycle-app you may have to eject to modify the config.

Automatically providing CycleReactPragma

You can avoid having to import cycle-react-pragma in every jsx file by allowing webpack to provide it:

plugins: [
  new webpack.ProvidePlugin({
    CycleReactPragma: ['cycle-react-pragma', 'default']
  })
],

Typescript

Add the following to your tsconfig.json:

{
  "compilerOptions": {
    "jsx": "react",
    "jsxFactory": "CycleReactPragma.createElement"
  }
}

If webpack is providing CycleReactPragma you will need to add typings to custom-typings.d.ts:

declare var CycleReactPragma: any;

Usage

function view(state$: Stream<State>): Stream<ReactElement> {
    return state$.map(({ count }) => (
        <div>
            <h2>Counter: {count}</h2>
            <button sel="add">Add</button>
            <button sel="subtract">Subtract</button>
        </div>
    ));
}

Notes

Please ensure you are depending on compatible versions of @cycle/react and @cycle/react-dom. They should both be at least version 2.1.x.

yarn list @cycle/react

should return a single result.

Readme

Keywords

Package Sidebar

Install

npm i cycle-react-pragma

Weekly Downloads

1

Version

0.1.0

License

MIT

Unpacked Size

196 kB

Total Files

11

Last publish

Collaborators

  • sliptype