signals-react
Minified432 BMinzipped257 BReact integration for @monstermann/signals.
Installation
sh
npm install @monstermann/signals-reactsh
pnpm add @monstermann/signals-reactsh
yarn add @monstermann/signals-reactsh
bun add @monstermann/signals-reactUsage
ts
import { useSignal } from "@monstermann/signals-react";
export function Component() {
const a = useSignal(signal);
const b = useSignal(memo);
const c = useSignal(reducer);
// Plain functions will get wrapped with a `memo()`
const d = useSignal(() => {});
}unplugin-signals-react
Alternatively you can use an unplugin that uses the Oxidation Compiler which automatically wraps signals with useSignal for you - the only prerequisite is that you prefix your signals with $:
tsx
export function Component({ className }) {
const style = $style();
return (
<div style={style} className={$class() + className}>
{$content()}
</div>
);
}tsx
export function Component({ className }) {
const style = useSignal($style);
return (
<div style={style} className={useSignal(() => $class() + className)}>
{useSignal($content)}
</div>
);
}Installation
sh
npm install -D @monstermann/signals-reactsh
pnpm -D add @monstermann/signals-reactsh
yarn -D add @monstermann/signals-reactsh
bun -D add @monstermann/signals-reactUsage
ts
// vite.config.ts
import signals from "@monstermann/signals-react/vite";
export default defineConfig({
plugins: [signals()],
});ts
// rollup.config.js
import signals from "@monstermann/signals-react/rollup";
export default {
plugins: [signals()],
};ts
// rolldown.config.js
import signals from "@monstermann/signals-react/rolldown";
export default {
plugins: [signals()],
};ts
// webpack.config.js
const signals = require("@monstermann/signals-react/webpack");
module.exports = {
plugins: [signals()],
};ts
// rspack.config.js
const signals = require("@monstermann/signals-react/rspack");
module.exports = {
plugins: [signals()],
};ts
// esbuild.config.js
import { build } from "esbuild";
import signals from "@monstermann/signals-react/esbuild";
build({
plugins: [signals()],
});