import { useState } from 'react'; import { createStore, useStore } from 'garfio/store'; const one = createStore(useState, 0); const two = createStore(useState, 1); const three = createStore(useState, 2); const four = createStore(useState, 3); const five = createStore(useState, 4); const Counters = () => { // 'tup' is tuple [count, setCount] const tup1 = useStore(one); const tup2 = useStore(two); const tup3 = useStore(three); const tup4 = useStore(four); const tup5 = useStore(five); const increment = set => c => set(c => c + 1); const decrement = set => c => set(c => c - 1); const reset = () => (tup1[1](0), tup2[1](0), tup3[1](0), tup4[1](0), tup5[1](0)); return ( ); }; // put in a table of 1x10 cells const TableCounters = () => ( {Array.from({ length: 10 }).map((_, idx) => ( ))}
); // This component don't "use" the stores, will not rendered on changes, // destructured standalone setters will rerender components that "use" the stores. const SetDefaults = () => { const set = (store, value) => { const [, set] = store.get(store); set(value); }; return ( ); }; // Repeat `TableCounters` component 40 times export default () => ( );