# redux-lite-action

> ### Install

Latest version **1.1.6** (published 2019-02-04) · MIT license · 0 weekly downloads

## Install

```sh
npm install redux-lite-action
pnpm add redux-lite-action
yarn add redux-lite-action
bun add redux-lite-action
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.6 |
| Published | 2019-02-04 |
| First published | 2018-04-26 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 132.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1 |
| Maintainers | tomas-sereikis |

## Links

- npm: https://www.npmjs.com/package/redux-lite-action
- Repository: https://github.com/Tomas-Sereikis/redux-lite-action
- Homepage: https://github.com/Tomas-Sereikis/redux-lite-action#readme
- Issues: https://github.com/Tomas-Sereikis/redux-lite-action/issues
- npm.io page: https://npm.io/package/redux-lite-action

## Dependencies (1)

- [redux](https://npm.io/package/redux.md) ^4.0.0

## Recent versions

- 1.1.6 (latest) — 2019-02-04
- 1.1.5 — 2018-04-30
- 1.1.4 — 2018-04-30
- 1.1.3 — 2018-04-30
- 1.1.2 — 2018-04-27
- 1.1.1 — 2018-04-27
- 1.1.0 — 2018-04-27
- 1.0.2 — 2018-04-26
- 1.0.1 — 2018-04-26
- 1.0.0 — 2018-04-26

## README

## Redux Lite Action

### Install

Install via npm `npm install redux-lite-action` or yarn `yarn add redux-lite-action`. 
Typescript typings are includes into package.

### Usage

Redux lite action solves issues that you need to define redux action names mutation functions separately.
`redux-lite-action` whats to simplify that process in just writing the mutation functions which can
be used as a action.

For example lets create a simple reducer which couple actions.

Reducer file.
```typescript
import { combineActions, createReducerAction } from 'redux-lite-action';

interface Reducer {
  a: boolean;
  b: boolean;
  c: boolean;
}

interface PayloadA {
  a: boolean;
}

interface PayloadB {
  b: boolean;
}

const initialState: Readonly<Reducer> = {
  a: false,
  b: false,
  c: false,
};

export const mutationActionA = createReducerAction(
  // name your action function which will be used as a action name witch 
  // id prefix in front of name function name, this will prevent same action names
  // when function name is duplicated 
  function actionMutationA(store: Reducer, payload: PayloadA) {
    return { ...store, a: payload.a };
  },
);

export const mutationActionB = createReducerAction(
  function actionMutationB(store: Reducer, payload: PayloadB) {
    return { ...store, b: payload.b };
  },
);

// you can not pass payload then it will be treated as undefined
// and then when calling action you will not need to pass argument.
// also note that name cal be passed as a parameter
export const mutationActionC = createReducerAction(
  (store: Reducer) => {
    return { ...store, c: true };
  },
  'actionMutationC',
);

export const reducer = combineActions(initialState, [
  mutationActionA,
  mutationActionB,
  mutationActionC,
]);
```

Some point here you use your action.
```typescript
import { 
  mutationActionA, 
  mutationActionB,
  mutationActionC,
} from './reducer';

dispatch(mutationActionA({ a: true }));
dispatch(mutationActionB({ b: true }));
// since payload is not defined then we do
// not need it to pass as a param
dispatch(mutationActionC());
```

---
_Source: https://npm.io/package/redux-lite-action · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
