synstate-preact-hooks
v0.1.2
Published
Type-safe State Management Library for TypeScript/JavaScript
Readme
SynState Preact hooks
Installation
npm add synstate-preact-hooksOr with other package managers:
# Yarn
yarn add synstate-preact-hooks
# pnpm
pnpm add synstate-preact-hooksQuick Start
Simple State Management
import type * as Preact from 'preact';
import { createState } from 'synstate-preact-hooks';
// Global state (outside component)
const [useUserState, setUserState] = createState({
name: '',
email: '',
});
const UserProfile = (): Preact.JSX.Element => {
const user = useUserState();
return (
<div>
<p>
{'Name: '}
{user.name}
</p>
<button
onClick={() => {
setUserState({
name: 'Alice',
email: '[email protected]',
});
}}
>
{'Set User'}
</button>
</div>
);
};With resetState, updateState, state APIs:
import type * as Preact from 'preact';
import { createState } from 'synstate-preact-hooks';
// Global state (outside component)
const [
useUserState,
setUserState,
{
resetState: resetUserState,
updateState: updateUserState,
state: userState,
},
] = createState({
name: '',
email: '',
});
userState.subscribe((u) => {
console.log('User is updated:', u);
});
const UserProfile = (): Preact.JSX.Element => {
const user = useUserState();
return (
<div>
<p>
{'Name: '}
{user.name}
</p>
<button
onClick={() => {
setUserState({
name: 'Alice',
email: '[email protected]',
});
}}
>
{'Set User'}
</button>
<button
onClick={() => {
updateUserState((prev) => ({
name: prev.name,
email: '',
}));
}}
>
{'Reset email'}
</button>
<button onClick={resetUserState}>{'Reset'}</button>
</div>
);
};