Socket
Socket
Sign inDemoInstall

little-state-machine

Package Overview
Dependencies
0
Maintainers
1
Versions
210
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

little-state-machine


Version published
Maintainers
1
Created

Package description

What is little-state-machine?

The little-state-machine npm package is a lightweight state management library for React applications. It is designed to be simple and easy to use, making it ideal for small to medium-sized projects where you need to manage state without the overhead of more complex solutions.

What are little-state-machine's main functionalities?

State Initialization

This feature allows you to initialize the state of your application. The `createStore` function is used to create a store with an initial state.

import { createStore } from 'little-state-machine';

const initialState = {
  user: {
    name: '',
    age: 0
  }
};

const store = createStore(initialState);

State Update

This feature allows you to update the state. The `useStateMachine` hook is used to access actions that can update the state. In this example, the `updateUser` action updates the user information in the state.

import { useStateMachine } from 'little-state-machine';

const updateUser = (state, payload) => ({
  ...state,
  user: {
    ...state.user,
    ...payload
  }
});

const Component = () => {
  const { actions } = useStateMachine({ updateUser });

  const handleUpdate = () => {
    actions.updateUser({ name: 'John', age: 30 });
  };

  return <button onClick={handleUpdate}>Update User</button>;
};

State Access

This feature allows you to access the current state. The `useStateMachine` hook is used to access the state, which can then be used in your components.

import { useStateMachine } from 'little-state-machine';

const Component = () => {
  const { state } = useStateMachine();

  return (
    <div>
      <p>Name: {state.user.name}</p>
      <p>Age: {state.user.age}</p>
    </div>
  );
};

Other packages similar to little-state-machine

Readme

Source
React forme Logo - React hook form valiation

Little State Machine

Flux state management should be easy

Tweet  npm downloads npm npm

  • Follow flux application architecture
  • Tiny with 0 dependency and simple
  • Persist your state by default
  • Build with React Hook

Install

$ npm install little-state-machine

Demo

Check out the Demo.

API

// individual action
Action: (store: Object, payload: any) => void;
// multiple actions
Actions: { [key: string] : Action }
// options to name action in debug, and weather trigger global state update to re-render entire app 
Options: {
  debugName: string, // unique debug name can really help you :)
  shouldReRenderApp: boolean, 
}

🔗 useStateMachine(Action | Actions, Options) =>

{ action: (any) => void, actions: { [key: string] : (any) => void}, state: Object }

This hook function will return action/actions and state of the app.

🔗 window.STATE_MACHINE_DEBUG

This will toggle the console output in dev tool.

window.LITTLE_STATE_MACHINE_DEBUG(true) to turn debug on in console

window.LITTLE_STATE_MACHINE_DEBUG(false) to turn off debug on in console

🔗 StateMachineProvider

This is a Provider Component to wrapper around your entire app in order to create context.

🔗 createStore

Function to initial the global store, call at app root where StateMachineProvider is.

Example

app.js

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

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

const App = ({children}) => {
  return (
    <StateMachineProvider>
      <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: { name },
  } = useStateMachine(updateName);

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

yourDetail.js

export default {
  name: 'test',
}

action.js

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

Keywords

FAQs

Last updated on 10 May 2019

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

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc