@react-nano/tsrux
v0.15.0
Published
tsrux stands for typesafe redux. It reduces boilerplate redux code.
Downloads
54
Maintainers
Readme
@react-nano/tsrux
@react-nano/tsrux enables you to reduce the redux boilerplate code you usually write to define your action creators, reducers, etc. and even gain type-safety in the process!
The name stands for type-safe redux, aside from the bloody obvious: TypeScript Rocks!
Why Use @react-nano/tsrux?
- Extremely lightweight: 300 byte vs 7.7 kilobyte for deox.
- Deadsimple to use
- No dependencies!
- Fully documented
- Automated unit- and type tests
- Liberal license: zlib/libpng
Example: Actions Creators
// No payload:
export const fetchTodos = actionCreator("TODOS/FETCH");
// With payload:
export const addTodo = actionCreator("TODOS/ADD", (label: string) => ({ label }));
// With payload and metadata:
export const removeTodo = actionCreator(
"TODOS/REMOVE",
(id: number) => ({ id }),
(id: number) => ({ metaId: id, foo: "bar" }),
);
Example: Reducers
export const todosReducer = mapReducers(initialState, (handle) => [
handle(addTodo, (state, action) => ({
...state,
list: [...state.list, { id: state.nextId, label: action.payload.label, checked: false }],
nextId: state.nextId + 1,
})),
...
]);
How to Use
Check out the documentation
Similar Projects
This package is heavily inspired by deox, but uses a more lightweight approach.
Aside from that, there are redux-actions and typesafe-actions.
Report Issues
Something not working quite as expected? Do you need a feature that has not been implemented yet? Check the issue tracker and add a new one if your problem is not already listed. Please try to provide a detailed description of your problem, including the steps to reproduce it.
Contribute
Awesome! If you would like to contribute with a new feature or submit a bugfix, fork this repo and send a pull request. Please, make sure all the unit tests are passing before submitting and add new ones in case you introduced new features.
License
@react-nano has been released under the zlib/libpng license, meaning you can use it free of charge, without strings attached in commercial and non-commercial projects. Credits are appreciated but not mandatory.