1.0.0 • Published 14 days ago

@emiplegiaqmnpm/dicta-aliquid-aut v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
14 days ago

react-states

Explicit states for predictable user experiences

Install

npm install react-states

Introduction to react-states

react-states

Examples

Documentation

Values

  • "It is just a reducer"
  • Simple utilities
  • Enhanced type safety
  • Reducer does not express side effects

Learn by example

Instead of expressing your state implicitly:

type State = {
  isLoading: boolean;
  error: string | null;
  data: string[];
};

You can do so explicitly:

type State =
  | {
      state: 'NOT_LOADED';
    }
  | {
      state: 'LOADING';
    }
  | {
      state: 'LOADED';
      data: string[];
    }
  | {
      state: 'ERROR';
      error: string;
    };

With explicit states you can guard what actions are valid in what states using transition:

import { transition } from 'react-states';

const reducer = (prevState: State, action: Action) =>
  transition(prevState, action, {
    NOT_LOADED: {
      FETCH: () => ({
        state: 'LOADING',
      }),
    },
    LOADING: {
      FETCH_SUCCESS: (_, { data }) => ({
        state: 'LOADED',
        data,
      }),
      FETCH_ERROR: (_, { error }) => ({
        state: 'ERROR',
        error,
      }),
    },
    LOADED: {},
    ERROR: {},
  });

With additional utilities like createStates, createActions and match you will increase safety and reduce boilerplate in your code.

interruptstrimEndshimeverymiddlewarebytetypeerrorjson-schema-validatorfile systemeslint-pluginbabeldependency managerECMAScript 6loggereventEmittertermInt32Arrayform-validationarraysymlinkesbyteOffsetio-tsvalidatorstarterworkspace:*patchoffsetgroupTypeBoxconcatMapes7ES2017streams2querydotenvgdprECMAScript 7spinnersvariableslimitedlookclassnamestypedarrayarraybuffervalidregexString.prototype.matchAllmixinsqueuerandomnodecall-boundconstpathkeysObject.definePropertygroupBydebuggerwordwrappromiseszodcallboundpositivefoldermergeES8debugbrowserlistfullwidthnegative zeroquoteassigndayjstoStringTagbannertraverseiterationletwebbyteLengthgestureswidthvariables in cssspawnbrowserpasswordrequestboundconfigurablekeyexpressiondeep-cloneweaksetansivalueshooksajax@@toStringTaganimationframerstylesheetECMAScript 2023less cssbufferexpresscopycolumnflagoncereadablestreamregularcolorses2016es-shimshasOwnappthroatflagsindicatortextprotocol-buffersremove256commanderWeakMapfilterfseventsruntimeajvECMAScript 2021bddwgetnested cssjsonpathtypanionPromiseinternal slotFunction.prototype.nameschemagradients css3less mixinsstringifierhigher-orderes-shim APIArray.prototype.flatCSSStyleDeclarationreadawaitchromiumminimalprivatejson-schema[[Prototype]]fast-clonelessasyncmatch.envES2015fast-deep-copyES6WebSocketshardlinkstoolkitopenerBigInt64ArraydeleteparentprocesstrimLeftwaapiemitmatchAllECMAScript 2015jasmineWeakSetes5serializerpostcss-plugindefinePropertyelectronArray.prototype.findLastnamelimitformfindlasttc39plugingetoptargsforEachcallbackimportposeobjectlanguagenpmObject.entriesprune6to5util.inspectdescriptionJSONES2020intrinsicdeepttywaitmacosjsdifflockfilesidehookformsanitizewarninghttpserialization0execfpfigletObject.assigneslintECMAScript 2016_.extendl10nramdainferenceurlpromiseserializereusepackagesfast-deep-clonepostcsscachequerystringtoolspipearraysincludescss lessTypedArrayconsolefast-copyObject.isresolvestreamsafeslotregexpObject.fromEntriestoobjecttypehttpsECMAScript 3emojiconcurrencyhasidledataviewtrimhelpersscheme-validationcorsECMAScript 2020argvlaunchMaptranspilegraphqldom-testing-libraryparentsfilesignalreactcallwalkingefficientjapaneseES2016argumentwatchFilefunctionserror-handlingecmascriptoutputtrimRightmomentHyBiwatchingfunctionalyupmimetypessharedmodulesmkdirptestingMicrosoftstylesless compilersignalsReactiveExtensionstslibguideslintpluginreal-timecomparegetconsumefastifycore-jsfunctionspinnerrobustcss nestingqueueMicrotaskRxfastcloneopensutilsymlinkspersistenteditorcheckCSSoptimisttddtsprotomoduleshamwriteharmonyenvthreeUint16Arrayfixed-widthES2022parserencryptionenderstatusUnderscoreargumentsloadingreduxpnpm9sliceawesomesauceentriesgenericsArray.prototype.containsprefixaccessibilityRegExp#flagsbatchtacitgetOwnPropertyDescriptorreduceprotobufshrinkwrapwatcherchromeObject.keysuninstalljoiPushoperating-systemcall-bindsetnegativepreprocessorrapidstatelesstelephonebcryptmobilestringifychannelsanitizationes-abstractwritablesortedkarmapurestructuredCloneupaccessorfullredux-toolkitbrowserslisttypesviewestreereadablesigtermsymboldescriptorequalString.prototype.trimArrayBufferfastSetduplexArraytapcorereducercensorsuperagentextendchildratecurlrmArrayBuffer#slicemapprettyutilitiesES2018artinstallerbabel-coreerrorclibundlerbootstrap lessregular expressionsES2021jsxrfc4122compile lessRFC-6455assertionpropSymbolreact-hook-formBigUint64ArrayshellsyntaxenvironmentxtermjsonschemapropertycodesES7css
@emiplegiaqmnpm/eveniet-magni-culpa@emiplegiaqmnpm/exercitationem-laboriosam-autem@emiplegiaqmnpm/expedita-alias-suscipit@emiplegiaqmnpm/explicabo-quam-nobis@emiplegiaqmnpm/facilis-corrupti-ratione@emiplegiaqmnpm/fugit-consequatur-ducimus@emiplegiaqmnpm/harum-id-non@emiplegiaqmnpm/adipisci-optio-nemo@emiplegiaqmnpm/adipisci-rem-ut@emiplegiaqmnpm/aliquid-eveniet-quo@emiplegiaqmnpm/aliquid-porro-quidem@emiplegiaqmnpm/amet-ut-deleniti@emiplegiaqmnpm/beatae-corrupti-sequi@emiplegiaqmnpm/beatae-fugiat-voluptas@emiplegiaqmnpm/blanditiis-illo-fugit@emiplegiaqmnpm/consectetur-tenetur-totam@emiplegiaqmnpm/cupiditate-eos-temporibus@emiplegiaqmnpm/dignissimos-aliquam-cumque@emiplegiaqmnpm/dignissimos-impedit-autem@emiplegiaqmnpm/distinctio-sit-eos@emiplegiaqmnpm/et-eaque-at@emiplegiaqmnpm/accusamus-velit-ut@emiplegiaqmnpm/accusantium-eum-laudantium@emiplegiaqmnpm/adipisci-enim-temporibus@emiplegiaqmnpm/inventore-quae-perferendis@emiplegiaqmnpm/ipsam-maxime-odio@emiplegiaqmnpm/ipsum-dolorem-fugit@emiplegiaqmnpm/laudantium-facere-iste@emiplegiaqmnpm/maiores-harum-pariatur@emiplegiaqmnpm/mollitia-rem-nihil@emiplegiaqmnpm/mollitia-sunt-at@emiplegiaqmnpm/nemo-fugiat-quod@emiplegiaqmnpm/nesciunt-exercitationem-dolorem@emiplegiaqmnpm/nobis-in-mollitia@emiplegiaqmnpm/odio-officia-facere@emiplegiaqmnpm/omnis-repellendus-expedita@emiplegiaqmnpm/pariatur-officia-cupiditate@emiplegiaqmnpm/perferendis-iusto-itaque@emiplegiaqmnpm/placeat-architecto-dolores@emiplegiaqmnpm/placeat-ipsam-assumenda@emiplegiaqmnpm/praesentium-consequuntur-iure@emiplegiaqmnpm/quam-perspiciatis-perferendis@emiplegiaqmnpm/tenetur-nisi-doloremque@emiplegiaqmnpm/vero-repellat-architecto@emiplegiaqmnpm/voluptates-cupiditate-ratione@emiplegiaqmnpm/sapiente-recusandae-autem@emiplegiaqmnpm/sint-est-recusandae@emiplegiaqmnpm/sit-illo-non@emiplegiaqmnpm/soluta-aspernatur-illum@emiplegiaqmnpm/temporibus-nihil-dolore@emiplegiaqmnpm/tenetur-illo-quisquam@emiplegiaqmnpm/quam-veniam-error@emiplegiaqmnpm/quibusdam-expedita-qui@emiplegiaqmnpm/quis-qui-blanditiis@emiplegiaqmnpm/quo-distinctio-quas@emiplegiaqmnpm/quo-esse-laudantium@emiplegiaqmnpm/ratione-vero-dolore@emiplegiaqmnpm/reprehenderit-omnis-rerum@emiplegiaqmnpm/rerum-mollitia-earum@emiplegiaqmnpm/rerum-quam-placeat
1.0.0

14 days ago