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 🙏

© 2026 – Pkg Stats / Ryan Hefner

reduceless-connect

v0.0.5

Published

Redux helpers

Readme

Reduceless-connect

Simple abstraction over Redux to make state management easy. You can change redux state for ui without creating constants and actions, just see examples.

Based on reduceless

Basic example:

For start we will create simple reducer file as you doing with redux. You already know how to do it:

const initialState = {
  settings: {
    showExamplePopup: false,
  }
}
export default function app(state, action) { }

After this we can use new "connect" from "reduceless-connect": This example for change "test" variable in reducer "app" without constants and actions. Simple?

import { connect } from 'reduceless-connect';
import * as actionCreators from 'redux/modules'; // https://github.com/erikras/ducks-modular-redux

@connect(
  ['app'], // working as 'state => state.app' in @connect react-redux.
  { ...actionCreators.app }, // working as 'dispatch => bindActionCreators({ ...actionCreators.app }, dispatch)' in @connect react-redux
  [{ setAppSettings: 'app.settings' }], // new method for change app.settings redux state
)
export default class TestComponent extends Component {
  static propTypes = {
    setAppSettings: PropTypes.func,
    settings: PropTypes.object,
    data: PropTypes.array,
  };
  render() {
    const { settings, setAppSettings, data } = this.props;

    return (
      <section>
        <button onClick={() => setAppSettings({ showExamplePopup: true })}>
          test
        </button>
        { settings.showExamplePopup && <div>showExamplePopup === true</div> }
      </section>
    );
  }
}

Multiple selector and setReduxState example:

With this example we can change "settings" in "categories" reducer and "settings" in app reducer without constants and actions.

@connect(
  ['app', 'user', 'categories'], // working as 'state => ({ ...state.app, ...state.user, ...state.categories })' in @connect react-redux
  { ...actionCreators.app, ...actionCreators.posts }, // // working as 'dispatch => bindActionCreators({ ...actionCreators.app, ...actionCreators.posts }, dispatch)' in @connect react-redux in @connect react-redux
  [{
    setAppSettings: 'app.settings'
  }, {
    setCategoriesSettings: 'categories.settings'
  }],
)

setReduxState by path

Can i change array? Yes, can! See next example for more details:

<button onClick={() => setAppSettings('list.2' { qwe: true })}> // = app.settings.list[2].qwe = true

For object:

<button onClick={() => setAppSettings('example.a' { qwe: true })}> // = app.settings.example.a.qwe = true

Full example in "redux-easy-boilerplate":

See the repo "redux-easy-boilerplate", branch "reduceless-connect". Component "app/components/Containers/ReducelessExample"

Also you can:

Deep selector example

@connect(
  ['app.data.info', 'posts.example.test'], // working as 'state => ({ ...state.app.data.info, ...state.posts.example.test })' in @connect react-redux

Props in setReduxState method

@connect(
  ['app'], // working as 'state => state.app' in @connect react-redux
  { ...actionCreators.app }, // working as 'dispatch => bindActionCreators({ ...actionCreators.app }, dispatch)' in @connect react-redux
  [{ setAppSettings: props => `app.data.${props.index}` }],
)

How it intall?

Very simple, you need update your default code with redux. Jus add "wrapReducerWithSetGlobalState" in combine reducers:

import { wrapReducerWithSetGlobalState } from 'reduceless-connect';

const rootReducer = wrapReducerWithSetGlobalState(
  combineReducers({
    form: formReducer,
    app,
    user,
    users,
    posts,
    categories,
    questions,
    rules,
    quotes,
  })
);

And your simple reducer file:

export default function app(state = {
  settings: {
    test: false,
  },
}, action) {