@innet/jsx

XML-ish syntax with innet

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
@innet/jsx
002.0.0-alpha.109 months ago2 years agoMinified + gzip package size for @innet/jsx in KB

Readme

InnetJs logo by Mikhail Lysikov
  @innet/jsx
 
NPM downloads changelog license

Abstract

JSX is one of the main features you can use with innet. JSX makes possible to use XML-ish syntax in JavaScript.
If you want to use JSX with innet you can check
This package contains plugins that handle jsx components.
stars watchers

Install

npm
npm i @innet/jsx
yarn
yarn add @innet/jsx

JSX Component

JSX Component is a function that get props argument
function Test (props) {
  return props?.id
}

Create a handler to handle JSX Component
import innet, { createHandler } from 'innet'
import { object } from '@innet/utils'
import { jsxComponent } from '@innet/jsx'

const handler = createHandler([
  object([
    jsxComponent,
  ]),
])
Here we say: an object should be handled as jsxComponent
Then we can use it as wall ```typescript jsx innet(, handler) // 'test'
innet(, handler) // undefined
If you try to use `null`, you can get an error, because of `null` is an object. To prevent this, use `nullish`

```typescript jsx
import innet, { createHandler } from 'innet'
import { object, nullish } from '@innet/utils'
import { jsxComponent, useChildren } from '@innet/jsx'

const handler = createHandler([
  nullish([]),
  object([
    jsxComponent,
  ]),
])

function Test () {
  console.log(useChildren())
}

innet(<Test>{null}</Test>, handler)
// [ null ]

JSX Plugin

jsxPlugins is a plugin which adds default jsx elements by jsx plugins.
```typescript jsx import innet, { createHandler } from 'innet' import { object, nullish } from '@innet/utils' import { jsxPlugins, useProps } from '@innet/jsx'
// JSX Plugin const sum = () => { const { a, b } = useProps() console.log(a + b) }
const handler = createHandler( nullish(), object(
jsxPlugins({
  sum,
}),
) )
innet(, handler) // 3
[innet-jsx](https://www.npmjs.com/package/innet-jsx) converts this code to:
```typescript
innet({
  type: 'sum',
  props: {
    a: 1,
    b: 2,
  }
}, handler)

Issues

If you find a bug or have a suggestion, please file an issue on GitHub.
issues