Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/yellowsink/solid-reactor

A compiler to ease the move from React to SolidJS.
https://github.com/yellowsink/solid-reactor

compiler javascript js-framework migration react solid solid-js swc

Last synced: 7 days ago
JSON representation

A compiler to ease the move from React to SolidJS.

Lists

README

        




Reactor

[![SWC](https://img.shields.io/badge/transforms%20by-SWC-orange)](https://swc.rs)
[![EmitKit](https://img.shields.io/badge/enhanced%20with-EmitKit-blueviolet)](https://github.com/yellowsink/emitkit)

---

[CLICK HERE FOR SOLIDHACK SUBMISSION DEMO VIDEO](https://youtu.be/Yt-_b3h0SjE)

A compiler to ease the move from React to SolidJS.

## Features

- Converts the following hooks to Solid equivalents:
* `useState` -> `createSignal`
* `useEffect` -> `createEffect`
- attempting to recreate the "run on every rerender" behaviour
* `useReducer` -> `createSignal` + a function
* `useRef` -> `{ current: }` + a variable
- convert (useRef-returned only) refs in `ref={myRef}` to `ref={myRef.current}`.

- Converts camel case (`marginRight`) style names to skewer case (`margin-right`)

## Example
```js
export default () => {
const [state, setState] = React.useState(0);

let [, rerender] = useReducer((a) => ~a, 0);

Reactor.useEffect(() => console.log(state));

const myRef = useRef();

return (
<>
setState(state * 2)} style={`color: red`} />

{state}




>
);
};
```

```js
export default () => {
const [state, setState] = createSignal(0);

let [$$__REACTOR_UNIQUE_VAR_1, $$__REACTOR_UNIQUE_VAR_0] = createSignal(0);
const rerender = () =>
$$__REACTOR_UNIQUE_VAR_0(((a) => ~a)($$__REACTOR_UNIQUE_VAR_1()));

createEffect(() => console.log(state()));

const myRef = {};

return (
<>
setState(state() * 2)} style={`color: red`} />

{state()}




>
);
};

```
(output hand-prettified,
but youre likely to either be using this as a build step,
or have a codebase with a formatter setup)