npm i @satha/core
pnpm add @satha/core
import { createStore } from '@satha/core';
const numberStore = createStore('number-save', 1);
const number = numberSave.get();
numberSave.set((state) => state + 1);
create a store which stores a numeric value
import { createStore } from '@satha/core';
const numberStore = createStore('number-save', 1);
const number = numberSave.get();
console.log(number)
numberSave.set((state) => state + 1);
Create dynamic stores using Subscribe/Unsubscribe methods. Subscription is global and will
work througout the page.
...
const numberSave = createStore('number-save', 1);
let numberValue = numberSave.get();
const subscribe = numberSave.subscribe((state) => {
numberValue = state;
})
const handleSetData = () => {
numberSave.set((state) => state + 1);
}
create an user details store packed in object
...
const userInfoStore = createStore('userInfo', {
name: 'S. Dogg',
age: 40,
birthPalce: 'LA'
});
const { name } = userInfoStore.get();
console.log(name);
userInfoStore.set(state => {
state.age = 50;
return state;
})
const { age } = userInfoStore.get();
console.log(age);
Reset value to initial state
...
numberSave.reset();
Create session storage (sessionStorage)
...
const numberSave = createStore('number-save', 1, {
storageType: 'session',
});
by default all stores are grouped under a single localStorage array. The values can be stored
in a diffrent localStorage array by specifying 'storageName'
...
const numberSave = useStorage('number-save', 1, {
storageName: 'alt-storage',
});
by default all stores are grouped under a single localStorage array. You can customize the
name of this default storage entry by calling 'setDefaultStorageName' before initializing any
stores.
[It's useful If you are using sub links e.g. github pages to avoid the possibility of local
storage name conflict.]
import {
setDefaultStorageName,
} from '@satha/core';
setDefaultStorageName('alt-store');
import { createStore } from '@satha/core';
import type { ICreateStore } from '@satha/core';
const numberStore: ICreateStore = createStore('number-save', 1);
const number = numberSave.get();
console.log(number)
numberSave.set((state: number) => state + 1);
an auto-subscribed 'useStore' react hook is available as a separate library
npm i @satha/react
pnpm add @satha/react
Javascript version
import React from 'react';
import { createStore } from '@satha/core';
import { useStore } from '@satha/react';
const numberStore = createStore('number-save', 1);
function App() {
const numValue = useStore(numberStore);
const onDecrement = () => {
numberStore.set((state) => state - 1);
};
const onIncrement = () => {
numberStore.set((state) => state + 1);
};
return (
<div className="App">
<h1>Test</h1>
<div>LocalStorage: {numValue}</div>
<button onClick={onDecrement}>-</button> <button onClick={onIncrement}>+</button>
</div>
);
}
export default App;
Typescript version
import React from 'react';
import { createStore } from '@satha/core';
import { useStore } from '@satha/react';
import type { ICreateStore } from '@satha/core';
const numberStore: ICreateStore = createStore('number-save', 1);
function App() {
const numValue = useStore(numberStore);
const onDecrement = () => {
numberStore.set((state: number) => state - 1);
};
const onIncrement = () => {
numberStore.set((state: number) => state + 1);
};
return (
<div className="App">
<h1>Test</h1>
<div>LocalStorage: {numValue}</div>
<button onClick={onDecrement}>-</button> <button onClick={onIncrement}>+</button>
</div>
);
}
export default App;