Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

hydux-data

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hydux-data

Data-driven development for hydux, in the Elm way.

  • 0.1.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

hydux-data

Build Status npm npm

Data-driven appication in hydux, in the Elm way, inspired by apollo-client.

Install

yarn add hydux-data # or npm i hydux-data

Usage

This package can make your daily work easier. When you get lot's of views which just rendering some data from server, with less user interaction, this package will add isLoading flag and fetch error handler automatically for your each fetch function.

Let's say we already get an api function, like this fake one, it takes some parameters and return a promise can resolve as a data, or reject as an error (message propertie is required and would be used later).

const asyncApi = {
  fetchCount(count: number, failed = false) {
    return new Promise<number>(
      (resolve, reject) =>
        setTimeout(
          () => {
            failed
              ? reject(new Error(`Fetch ${count} failed!`))
              : resolve(count)
          },
          10,
        )
    )
  },
}

Now we can make a loadable api to generate some state and actions.

import Loadable from 'hydux-data'
const loadableApi = Loadable({
  fetchCount: {
    init: 0, // initial state
    api: asyncApi.fetchCount,
    // Custom actions to handleing fetch start/resolved/rejected event
    // handleStart: (key: string) => (state, actions) => {/*...*/}
    // handleSuccess: (key: string, data: Data) => (state, actions) => {/*...*/}
    // handleError: (key: string, err: Error) => (state, actions) => {/*...*/}
  },
})
const ctx = Hydux.app<typeof loadableApi.state, typeof loadableApi.actions>({
  init: () => loadableApi.state,
  actions: loadableApi.actions,
  view: (state, actions) => {
    // here we can access the fetch state and actions
    return //
  },
})

Here is the generated state and actions

state = {
  fetchCount: {
    isLoading: false, // whether is loading know
    data: 0, // initial data from `param.init`, if fetch success it would be the the data from api
    error: '', // rawError.message
    rawError: null, // the raw error from fetch function
  }
}

actions = {
  fetchCount: (count: number, failed = false) => any // a generated action with same signature of fetch function
  disableLoadingFlag: () => any // just as the name says, some times we don't want the loading animation, so we can simply disable them all!
  enableLoadingFlag: () => any // just as the name says
}

Example App

git clone https://github.com/hydux/hydux-data.git
cd examples/counter
yarn # or npm i
npm start

Now open http://localhost:8080 and hack!

License

MIT

Keywords

FAQs

Package last updated on 11 Jul 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc