State management and common hooks
import React from 'react';
import ReactDOM from 'react-dom';
import { atom, useAtom } from 'atoms-state';
const countAtom = atom(10);
const sumAtom = atom((get) => get(countAtom) + 10);
const increment = () => {
countAtom.update((count) => count + 1);
const decrement = () => {
countAtom.update((count) => count - 1);
const count = useAtom(countAtom);
const sum = useAtom(sumAtom);
<button onClick={increment}>Inc</button>
<button onClick={decrement}>Dec</button>
ReactDOM.render(<Counter />, document.getElementById('root'));
import React, { Suspense } from 'react';
import ReactDOM from 'react-dom';
import { asyncAtom, useAsyncAtom } from 'atoms-state';
const todoAtom = asyncAtom(async ({ id }) => {
const res = await fetch(`https://jsonplaceholder.typicode.com/todos/${id}`);
const completeTodo = () => {
todoAtom.update((todo) => ({ ...todo, completed: !todo.completed }));
const todo = useAsyncAtom(todoAtom, { id: 1 });
<p>userId: {todo.userId}</p>
<p>title: {todo.title}</p>
<p>completed: {todo.completed}</p>
<button onClick={completeTodo}>Toggle Complete</button>
<Suspense fallback={<div>Loading</div>}>
document.getElementById('root'),