@ovotech/async-reactor-ts
    TypeScript icon, indicating that this package has built-in type declarations

    0.2.0 • Public • Published

    async-reactor-ts

    Render async Stateless Functional Components, using Typescript

    Installation

    yarn add async-reactor-ts

    It has peer dependencies of "react" and "react-dom"

    Usage

    import * as React from 'react';
    import { AsyncReactor } from '@ovotech/async-reactor-ts';
     
    const Home = (
      <AsyncReactor loader={() => someAsnycStuff()}>
        {({ loading, result }) => {
          if (loading) {
            return <div>Loading</div>;
          }
     
          return <div>Home Screen {result}</div>;
        }}
      </AsyncReactor>
    );

    You'll receive the result of the async loader call in the "result" prop

    Handle errors

    If there is an error in the loader, you will receive it as an "error" prop

    import * as React from 'react';
    import { AsyncReactor } from '@ovotech/async-reactor-ts';
     
    const Home = (
      <AsyncReactor loader={() => someAsnycStuff()}>
        {({ loading, error }) => {
          if (loading) {
            return <div>Loading</div>;
          }
     
          if (error) {
            return <div>Error {error.message}</div>;
          }
     
          return <div>Home Screen</div>;
        }}
      </AsyncReactor>
    );

    Example using fetch

    import * as React from 'react';
    import { AsyncReactor } from '@ovotech/async-reactor-ts';
     
    const Home = (
      <AsyncReactor
        loader={async () => {
          const data = await fetch('https://jsonplaceholder.typicode.com/posts');
          return await data.json();
        }}
      >
        {({ loading, result }) => {
          if (loading) {
            return <div>Loading</div>;
          }
     
          return <ul>{result.map(x => <li key={x.id}>{x.title}</li>)}</ul>;
        }}
      </AsyncReactor>
    );

    Development

    In order to develop on this package:

    git clone git@github.com:ovotech/async-reactor-ts.git
    cd async-reactor-ts
    yarn

    Running tests

    yarn lint
    yarn test

    Deploying new versions

    New versions are deployed using "Github Releases" feature. We use SemVer for versioning. For the versions available, see npm async-reactor-ts.

    Authors

    • Ivan Kerin - Initial work - ivank

    See also the list of contributors who participated in this project.

    License

    This project is licensed under the MIT License - see the LICENSE.md file for details

    Acknowledgments

    Inspired by async-reactor project

    Keywords

    none

    Install

    npm i @ovotech/async-reactor-ts

    DownloadsWeekly Downloads

    35

    Version

    0.2.0

    License

    MIT

    Unpacked Size

    11.6 kB

    Total Files

    17

    Last publish

    Collaborators

    • oeptariffs
    • nisheeth
    • fgkramer-klz
    • tony.ross
    • bvjones
    • data.discovery.ovo
    • ralitsa
    • fraserhamiltonovo
    • accrecovo
    • luigi.riefolo
    • andy-heywood-ovo
    • rmcnovo
    • mgdigital-mike
    • sureshmandalapu
    • ggerikp
    • xnejp03
    • emmapr123
    • andrew-brook-rad
    • a.calderwood
    • sulgee.kim
    • sseccombe
    • samcooper720x
    • lughino
    • vlabinskyy-corgi
    • amayuk
    • jagreenwood1
    • mbayoumy
    • radek_tomasek
    • clarencedglee
    • ovocms
    • ovotech-sme-team
    • gjain-npm-ovo
    • kenneth-gray
    • philip-ovo
    • nevenablagoeva
    • pete-woodland
    • orion-migration-team
    • ovotech-sg
    • chanex
    • ovotech-qs
    • kelveden
    • ovotech-paym
    • ovotech-payments
    • ovotech-live
    • ovotech-payg
    • freddybushboy
    • sarahlikeshiny
    • r.midyk
    • ovotech-boost
    • agaovo
    • filose
    • tomverran-ovo
    • props
    • vanyakurdup
    • yesdaveovo
    • rob-ovo
    • ellafutkowska
    • ikerin
    • mwidurek
    • andreaborsos
    • tomshawovo
    • dmytro.kubatko
    • ovotech-identity
    • mike.panayotov
    • iuna4e
    • lcatallo
    • orex-team
    • ahvargas
    • cwkaluza
    • smart-heat-uat
    • smart-heat-prod
    • potsec
    • rosario-ovo
    • tech.international
    • tozzy
    • jvmovo
    • boost-smile
    • nicolasov
    • ovo.cms.devs
    • mkohlmyr
    • sketchingdev
    • mrkiplin
    • ovo-devices
    • sophiepoole
    • joepurnell-ovo
    • gmbovo
    • molbalazs
    • joewhittles
    • sampennington64
    • marcusgriff
    • amelia.ovo
    • juliabutterly
    • chris.smith
    • sophiesillmanovo
    • marcesquerra
    • pedoublety
    • ovo-engagement
    • tokict
    • marcuskielly
    • david.chellapah.ovo
    • kupxc
    • harrisonbaxter
    • apjm
    • shnist
    • mikemchugh
    • sarahbeharry
    • ursularodgers
    • inlustra
    • andrewjtn
    • tarlingovo
    • troyb95
    • david.ovo
    • ovoenergyapps
    • marina-ovo
    • tom-g-dane
    • homemoves
    • samwest
    • sophiefield
    • simonmclean-ovo
    • jamesbaum
    • robert-g-j
    • peterwilkins
    • paceteamkaluza
    • henrywoodsend
    • ovo-oot-bot
    • stuharv-ovo
    • eddiec86
    • richardjonesovo
    • csherwin
    • g-tibbs
    • puzzledbytheweb
    • adryanovo
    • lewright
    • pedro.caldeira
    • aidenscott2016
    • keirlawson
    • dwfullerton
    • gordok
    • darrenthomas-sse
    • seagullmouse
    • markwood23
    • timsteeleovo
    • jacktreble
    • gordon-rennie-ovo
    • adam-mcdevitt
    • jkiely
    • ovo-dc
    • tomsquires
    • orion-digital-support-experience
    • ovotech-smart-thermostat
    • jbeckett
    • yahmad
    • inbrewj
    • kelemensanyi
    • gianlo-ovo
    • wtaylor-ovo
    • jrdavenport
    • dleyland-ovo
    • rob.desbois
    • sicrossley
    • joey.ciechanowicz
    • lewisdick-ovo
    • sjmann
    • stevemossovo
    • nbrites
    • eduardolaranjo
    • unibozu
    • cp-ui-tooling
    • lenardprattovo
    • dieman89
    • jensraaby-ovo
    • anthonysmithovo
    • jacobthwaitesovo
    • tom.sherman
    • tomlloyd
    • matyas-ovo
    • jamesnoble1
    • phil-pinkowski
    • ovo-aarongibbison
    • nebuladesignsystem
    • ovo-matt-hodges
    • luke-adams-ovo
    • ovolly
    • j_kapella
    • mike.walters
    • bgzstephen
    • matthewbursteinovo
    • kslat3r
    • petro.pavlenko
    • mtardugno-ovo
    • vslepkan
    • zoelanham
    • suhaelovo
    • jchoskins
    • vholovko
    • tom.mottram.kaluza
    • anhnguyenis
    • eddwilliamsovo
    • ewan-m
    • mishabruml
    • maciek-kaluza
    • mollyboyle
    • vmary
    • babickd
    • mugishau
    • vkobyletskyi_ovo
    • mykola.p
    • peterh-ovo
    • dvidg
    • ahmediieovo
    • nickfitton-ovo
    • apgoodier
    • dave.allison
    • tom-greenwood
    • oep-accounts-bot
    • cbousie
    • j.okeefe
    • kir_exp
    • ursula_rodgers
    • jgarciapaj
    • petegrace
    • retrojetpacks
    • benaston13
    • ovo-bit-tech
    • fulvio.ovo
    • blair.calderwood.radically
    • pedromss
    • petro.shevchuk.corgi
    • v.kolesnyk
    • simonlewissse
    • benm13563
    • joolskaluza
    • s.sosnytskyi
    • vlavrynenko-nix
    • jifarra-kaluza
    • jameswelshkaluza
    • kimnil
    • carolinelywood
    • mike-gregory-kaluza
    • vasil.dininski
    • olesiapaslavska
    • sir_hiss
    • humancatfood
    • javapyscript
    • csillabarna
    • luca.sale
    • friendigo
    • oroberts221
    • pedro.costa.kaluza
    • jelaxshan
    • onishchenko
    • kevin.gilmore
    • annebeth-ovo
    • kostyagromov92
    • quartin
    • crack.design
    • gothack-ovo
    • georgexcollins
    • kapikaluza
    • v.vasylets
    • iovana.pavlovici
    • filosganga
    • chris.brindley
    • engagement-insights
    • hentielouw
    • jaws-bot
    • leaski
    • elliekempster91
    • zoejm
    • rekaelek-ovo
    • nathanmarshovo
    • robturnerovo
    • dsingh07
    • ovo-james
    • jthomasovo
    • vitalii_khudenko