npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

redux-state-action

v1.0.9

Published

Make your life easier

Downloads

4,457

Readme

Make state action

Make your life easier when using react redux.

Just one command to create reducers, action creators and selectors.

Getting started

npm install redux-state-action --save
yarn add redux-state-action

How to use

Example


// state.js

import makeStateAction from 'redux-state-action';

...
const reducerPath = 'eh/sharingOptionModal';
const names = {
  isOpen: 'boolean',
  content: 'string',
  count: {
    type: 'number',
    defaultValue: 0,
  },
};

export const {
  branch,
  reducers,
  actionCreatorFactory,
  selectorFactory,
} = makeStateAction({
  reducerPath,
  names,
});


// branch is the same with code below

// Reducer
export const reducer = combineReducers({
  ...reducers,
});

export default { [reducerPath]: reducer };

You will need to use actionCreatorFactory and selectorFactory in your component


// actionCreatorFactory
const setIsOpenActionCreator = actionCreatorFactory('isOpen');
const toggleIsOpenActionCreator = actionCreatorFactory('isOpen', 'toggle');
const setContentActionCreator = actionCreatorFactory('content');

// selectorFactory

const isOpenSelector = actionCreatorFactory('isOpen');
const contentSelector = actionCreatorFactory('content');
const countSelector = actionCreatorFactory('count');

makeStateAction spec

Params


makeStateAction({
  reducerPath,
  names,
});

reducerPath

This is branch name in your redux store

names

This is an object with

key: name of variable you want to have

value: options for this variable

Example:

const names = {
  isOpen: 'boolean', // Short hand of type boolean
  content: 'string', // Short hand of type string
  count: {
    type: 'number',
    defaultValue: 0,
  },
};

Supported variable types

string

boolean

number

array

object

Result of makeStateAction

reducers

Object with key is names and combined reducer of them.

Notes:

Just only use reducers when you want to extend it. If not, use branch instead

reducerPath must be the same

// Reducer
export const reducer = combineReducers({
  ...reducers,
});

export default { [reducerPath]: reducer };

branch

makeStateAction also return branch.

It is an object with key is reducerPath and value is reducers.

You can import branch into rootReducer ( same as what you do with { [reducerPath]: reducer } )

actionCreatorFactory,

Function that return actionCreator

const actionCreatorFactory = (varName: string, actionType = 'set') => {
  ...
}

varName: name of variable

type: With each variable type, there is a set of default actionType that makeStateAction is supported. See the section Supported action types below.

actionTypeFactory

Function that return action type

const actionTypeFactory = (varName: string, actionType = 'set') => {
  ...
}

varName: name of variable

type: With each variable type, there is a set of default actionType that makeStateAction is supported. See the section Supported action types below.

selectorFactory,

Function that return selector

const selectorFactory = (varName: string) : SelectorType => {
  ...
}

varName: name of variable

Supported action types

For all

set

object

assign

omit

array

push

pushToFirst

remove

filter

number

increase

decrease