Quick Start

Step 1: Create a Store 

TypeScript
JavaScript
import { createStore } from "contection";

type AppStoreType = {
user: { name: string; email: string };
count: number;
theme: "light" | "dark";
};

const AppStore = createStore<AppStoreType>({
user: { name: "", email: "" },
count: 0,
theme: "light",
});

export { AppStore };
export type { AppStoreType };
import { createStore } from "contection";

const AppStore = createStore({
user: { name: "", email: "" },
count: 0,
theme: "light",
});

export { AppStore };

Step 2: Provide the Store 

TypeScript
JavaScript
import { AppStore } from "./store";

function App() {
return (
<AppStore>
<YourComponents />
</AppStore>
);
}
import { AppStore } from "./store";

function App() {
return (
<AppStore>
<YourComponents />
</AppStore>
);
}

Each Provider creates an isolated scope, similar to React Context.Provider.

Step 3: Use the Store 

Subscribe to Specific Keys 

TypeScript
JavaScript
import { useStore } from "contection";
import { AppStore } from "./store";

function Counter() {
// Component re-renders only when 'count' value changes
const { count } = useStore(AppStore, { keys: ["count"] });

return (
<div>
<p>Count: {count}</p>
</div>
);
}
import { useStore } from "contection";
import { AppStore } from "./store";

function Counter() {
const { count } = useStore(AppStore, { keys: ["count"] });

return (
<div>
<p>Count: {count}</p>
</div>
);
}

Access Nested Values 

import { useStore } from "contection";
import { AppStore } from "./store";

function UserEmail() {
// Component re-renders only when 'user.email' changes
const email = useStore(AppStore, {
keys: ["user"],
mutation: (store) => store.user.email,
});

return <p>E-mail: {email}</p>;
}

Update the Store 

import { useStoreReducer } from "contection";
import { AppStore } from "./store";

function CounterControls() {
// useStoreReducer never triggers re-render
const [store, setStore] = useStoreReducer(AppStore);

return (
<div>
<button onClick={() => alert(store.count)}>Show count</button>
<button onClick={() => setStore({ count: store.count + 1 })}>
Increment
</button>
<button onClick={() => setStore((prev) => ({ count: prev.count - 1 }))}>
Decrement
</button>
</div>
);
}

Next 

Return to navigation