0.3.0 • Published 9 months ago

swc-plugin-jsx-control-statements-v2 v0.3.0

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

🦀 JSX control statements for swc

Original idea: babel-plugin-jsx-control-statements

Installation

pnpm (recommended):

pnpm i -D swc-plugin-jsx-control-statements

or yarn

yarn add -D swc-plugin-jsx-control-statements

Configure swc

In your SWC config, you have to add to jsc.experimental.plugins - ['swc-plugin-jsx-control-statements', {}], like in the following code:

jsc: {
    experimental: {
        plugins: [
            ['swc-plugin-jsx-control-statements', {}],
        ],
    },
},

Usage

<If> tag

import React from 'react';

const Greeting = () => {
  const [closed, setClosed] = useState(false);
  
  return (
      <>
          <If condition={!closed}>
              Hello,
          </If>
          World
          <If condition={!closed}>
            <button onClick={() => setClosed(true)}>Close</button>
          </If>
      </>
  )
};

<Choose> tag (if - else if - else condition)

import React from 'react';

const Greeting = () => {
  const [closed, setClosed] = useState(false);
  
  return (
      <>
          <Choose>
              <When condition={!closed}>
                  Hello,
              </When>
              <Otherwise>
                  Bye,
              </Otherwise>
          </Choose>
          World
          <If condition={!closed}>
            <button onClick={() => setClosed(true)}>Close</button>
          </If>
      </>
  )
};

TODO:

  • Support <For /> tag