0.4.3 • Published 5 years ago

react-brix v0.4.3

Weekly downloads
27
License
ISC
Repository
github
Last release
5 years ago

react-brix

React-Brix

React-Brix is inspired by react hooks and Redux. React-brix allows you to implement an immutable app-wide state machine in React without having to write reducers or selectors. Just use a hook to get the data from your state using a path. If the data is not assigned yet, provide a connector to retrieve the data. The data will be stored in state automatically for you.

  • useBrix - set/retrieve data from the app context
  • useBrixWorker - (same as useBrix), If data does not exist, asynchronously gets data with a worker and stores in state

Requirements

React ^16.7.0-alpha.2 Immutable.js

Installation

To install this :

npm install react-brix --save

or

yarn add react-brix

Setup


import { BrixProvider } from 'react-brix'
...
const App = () => {
  return (
    <React>
      <BrixProvider value={initialState}>
        <div className='App'>
          ...
        </div>
      </BrixProvider>
    </React.StrictMode >
  )
}

Where the initialBrix value is an immutable Map with any initial data your want for your app.

Usage

useBrix

import { useBrix } from 'react-brix'
import { paths } from '../context'
...
const Name = () => {
  const [value, set] = useBrix(paths.name.first.get())

  return (
    <>
      <TextField label='First' value={value} />
      ...
    </>
  )
}

export default Name

useBrixWorker

import { useBrixWorker, BoundedSuspense } from 'react-brix'
import { paths, getAddress } from '../context'
...
const MyWorkingComponent = () => {
  const address = useBrixWorker(paths.address.get(), getAddress, Map())
  return (
    <Address datum={address} />
  )
}
...
const AddressWrapper = () => {

  return (
    <BoundedSuspense
      fallback={<div>fetching address...</div>}
      boundary={<div>An error ocurred getting the address</div>}
    >
      <MyWorkingComponent />
    </BoundedSuspense>
  )
}

export default AddressWrapper
  • getAddress is an async function that will return the address when completed.
  • Map() can be substituted for whatever default value you expect.
  • BoundedSuspense uses React.Suspense but also adds an error boundary for catching async errors that my happen.

ToDo

  • Configure the data store so that something other than immutable can be used such as perpetual-js or plain JS
  • Enhance it!
0.4.3

5 years ago

0.4.2

5 years ago

0.4.1

5 years ago

0.4.0

5 years ago

0.3.8

5 years ago

0.3.7

5 years ago

0.3.6

5 years ago

0.3.5

5 years ago

0.3.8-alpha.1

5 years ago

0.3.4

5 years ago

0.3.3

5 years ago

0.3.2

5 years ago

0.3.1

5 years ago

0.2.1

5 years ago

0.1.25

5 years ago

0.1.24

5 years ago

0.1.23

5 years ago

0.1.22

5 years ago

0.1.21

5 years ago

0.1.20

5 years ago

0.1.19

5 years ago

0.1.18

5 years ago

0.1.17

5 years ago

0.1.16

6 years ago

0.1.15

6 years ago

0.1.14

6 years ago

0.1.13

6 years ago

0.1.12

6 years ago

0.1.11

6 years ago

0.1.10

6 years ago

0.1.9

6 years ago

0.1.8

6 years ago

0.1.7

6 years ago

0.1.6

6 years ago

0.1.5

6 years ago

0.1.4

6 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago