Security News
PyPI Introduces Digital Attestations to Strengthen Python Package Security
PyPI now supports digital attestations, enhancing security and trust by allowing package maintainers to verify the authenticity of Python packages.
reactive-redux-state
Advanced tools
Make non-UI related redux state reactive.
Some framework for building desktop app like Electron may have multi processes architecture, some processes are UI unrelavant. These processes are very different with Nodejs server processes, some features and operations are still handled within these processes, a event-driven model (like nodejs server) can barely handle, so redux is still a good solution even in a non-UI process.
Taking electron as example, if Redux is needed in main process there are some points to be considered.
The main idea of this module is using reselect to memoize the preview sub state or some data derived from state, when state changes, corresponding listeners will be called.
Install
npm install --save reactive-redux-state
Create selector mapper
Use reselect create a selector
.
import { createSelector } from 'reselect'
const unitSelector = state => state.unitSwitcher;
const counterSelector = state => state.counter;
const expressionSelector = createSelector(
unitSelector,
counterSelector,
(u, c) => `Totally ${c}${u}`
);
For further reselect
usage, check reselect document
.
Map listeners to selector
...
import { createSelectorMapper } from 'reactive-redux-state'
const listenerA = (preState,nextState) => {
console.log(`A got pre:${preState} & next:${nextState}`);
}
const listenerB = (preState,nextState) => {
console.log(`B got pre:${preState} & next:${nextState}`);
}
...
const mapper = createSelectorMapper(expressionSelector,listenerA,listenerB);
// OR:
// const mapper = createSelectorMapper(expressionSelector,[listenerA,listenerB]);
If you want dispatch another action inside the listen be sure using asynchronous functions, otherwise endless loop will be encountered.
const listenerA = (preState,nextState) => {
setImmediate(()=>{
store.dispatch(increment())
})
}
Reativate state
...
import { reactivateState } from 'reactive-redux-state';
...
reactivateState(store,mapper)
// bind multi mappers:
// reactivateState(store,mapper1,mapper2);
// Or
// reactivateState(store,[mapper1,mapper2]);
MIT
FAQs
Make non-UI related redux state reactive
We found that reactive-redux-state demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now supports digital attestations, enhancing security and trust by allowing package maintainers to verify the authenticity of Python packages.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.