GitHub - reclarejs/reclare: Declarative State and Logic Management
source link: https://github.com/reclarejs/reclare
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
Declarative State and Logic Management
Introduction • Key Features • Basic Example • Documentation • Feedback • Contribution
What is Reclare ?
Reclare is a lightweight library to manage the application state alongside business logic, without compromising from the predictability of the state. It is inspired by Redux and the Elm architecture and includes many of the familiar concepts.
Key Features
- Manage state and logic together
- Predictable, immutable state management
- Handle requests / side effects
- Built-in way to modularise your code
- For all frameworks - offical middleware for React
- Simple to create and use custom middlewares
- Easy to install, minimal configuration
- Easy-to-grasp concepts
Basic Example
Below is an example of what declarations would look like in the context of a simple counter implementation with one simple rule: the counter cannot go below zero:
{ on: 'increment', reducer: ({ state }) => ({ ...state, counter: state.counter + 1 }) reaction: ({ state }) => console.log(`Incremented to ${state.counter}`) }, { on: 'decrement', situation: ({ state }) => state.counter > 0, reducer: ({ state }) => ({ ...state, counter: state.counter - 1 }), reaction: ({ state }) => console.log(`Decremented to ${state.counter}`) }, { on: 'decrement', situation: ({ state }) => state.counter <= 0, reaction: () => alert('Counter already at zero') }
Upon the broadcast of increment
, the first declaration will be invoked. It will increment the counter and log the updated number. decrement
event hits two declarations. First one only invokes when the counter is greater than zero and decrements the counter. Second one invokes when counter is zero, and alerts the error message.
Broadcasting these events would look something like this:
<Button value="+" onClick={() => broadcast('increment')} /> <Button value="-" onClick={() => broadcast('decrement')} />
Documentation
The documentation is still under construction, it still has some missing parts. My apologies for that. I will try to complete it as soon as possible.
Click here for the documentation
Feedback
What do you think about Reclare? Do you have any ideas? I would love to hear them, and kind of feedback would be much appreciated. You can email me or contact me some other way.
Contribution
The contribution guideline for Reclare is not ready at the time being, but if you love this project and want to help, please contact me.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK