0.7.2 • Published 2 years ago

atoms-state v0.7.2

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

atoms-state

Version

A simple statemanagement library for react.

npm i atoms-state

Usage

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 Counter = () => {
  const count = useAtom(countAtom);
  const sum = useAtom(sumAtom);

  return (
    <div>
      <p>Count: {count}</p>
      <p>Sum: {sum}</p>
      <button onClick={increment}>Inc</button>
      <button onClick={decrement}>Dec</button>
    </div>
  );
};

ReactDOM.render(<Counter />, document.getElementById('root'));

Async

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}`);
  return await res.json();
});

const completeTodo = () => {
  todoAtom.update(todo => ({ ...todo, completed: !todo.completed }));
};

const Counter = () => {
  const todo = useAsyncAtom(todoAtom, { id: 1 });

  return (
    <div>
      <p>id: {todo.id}</p>
      <p>userId: {todo.userId}</p>
      <p>title: {todo.title}</p>
      <p>completed: {todo.completed}</p>
      <button onClick={completeTodo}>Toggle Complete</button>
    </div>
  );
};

ReactDOM.render(
  <Suspense fallback={<div>Loading</div>}>
    <Counter />
  </Suspense>,
  document.getElementById('root')
);
0.7.2

2 years ago

0.7.1

2 years ago

0.7.0

2 years ago

0.6.0

3 years ago

0.5.0

3 years ago

0.4.1

3 years ago

0.4.0

3 years ago

0.3.1

3 years ago

0.3.0

3 years ago