ciganandrea / little-state-machine-dev-tools

little state machine dev tools

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Little State Machine - React Hooks for state management

Little State Machine Devtools

State management made super simple

Tweet  npm downloads npm

πŸ“¦ Installation

$ npm install little-state-machine-devtools

πŸ–₯ Demo

Check out the Demo.
import { DevTool } from 'little-state-machine-devtools'

<StateMachineProvider>
 {process.env.NODE_ENV !== 'production' && <DevTool />}
</StateMachineProvider>

πŸ“– Example

πŸ“‹ app.js

import React from 'react'
import yourDetail from './yourDetail'
import YourComponent from './yourComponent'
import { StateMachineProvider, createStore } from 'little-state-machine'
import { DevTool } from 'little-state-machine-devtools'

// The following code is for React Native usage
// import { AsyncStorage } from "react-native";
// setStorageType(AsyncStorage);

// create your store
createStore({
  yourDetail,
});

export default () => {
  return (
    <StateMachineProvider>
      {process.env.NODE_ENV !== 'production' && <DevTool />}
      <YourComponent />
    </StateMachineProvider>
  )
}

πŸ“‹ yourComponent.js

import React from 'react'
import { updateName } from './action.js'
import { useStateMachine } from 'little-state-machine'

export default function YourComponent() {
  const {
    action,
    state: { yourDetail: { name } },
  } = useStateMachine(updateName);

  return <div onClick={() => action({ name: 'bill' })}>{name}</div>
}

πŸ“‹ yourDetail.js

export default {
  name: 'test',
}

πŸ“‹ action.js

export function updateName(state, payload) {
  return {
    ...state,
    yourDetail: {
      ...state.yourDetail,
      ...payload,
    },
  }
}

About

little state machine dev tools

License:MIT License


Languages

Language:TypeScript 89.9%Language:CSS 5.0%Language:HTML 3.1%Language:JavaScript 2.0%