Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

redux-dryer

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

redux-dryer - npm Package Compare versions

Comparing version 0.1.5 to 0.1.6

.npmignore

2

package.json
{
"name": "redux-dryer",
"version": "0.1.5",
"version": "0.1.6",
"description": "Redux utilities to keep your reducers small and DRY",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

@@ -5,2 +5,5 @@ # Redux-dryer

#### [Demo Playground](https://codesandbox.io/s/64joqv325k)
### Installing

@@ -10,3 +13,3 @@

## Useage
## Usage

@@ -35,4 +38,4 @@ ### Generating Actions

```javascript
import { generateReducer } from 'redux-dryer';
import WalletActions from '../actions/wallet';
import { generateReducer } from "redux-dryer";
import WalletActions from "./wallet-actions.js";

@@ -47,34 +50,110 @@ const INITIAL_STATE = { balance: 0 };

### Combining reducer
### Works with `redux-thunk`
It works the same as a normal reducer.
`bitcoin-actions.js`
```javascript
import { generateActions } from "redux-dryer";
const BitcoinActions = {
setAmount: (rate, balance) => ({ bitcoins: balance / rate })
};
export default generateActions(BitcoinActions, "bitcoin");
```
`bitcoin-thunks.js`
```javascript
import BitcoinActions from "./bitcoin-actions.js";
const getRate = json =>
parseInt(json.bpi.USD.rate.split(",").join(""), 10).toFixed(6);
export const toBTC = balance => dispatch =>
fetch("https://api.coindesk.com/v1/bpi/currentprice.json")
.then(r => r.json())
.then(json => dispatch(BitcoinActions.setAmount(getRate(json), balance)));
```
`bitcoin-reducer.js`
```
import { generateReducer } from "redux-dryer";
import BitcoinActions from "./bitcoin-actions.js";
const INITIAL_STATE = { bitcoins: 0 };
export default generateReducer(INITIAL_STATE, BitcoinActions);
```
### Combining reducers
`reducers.js`
```javascript
import walletReducer from './wallet-reducer.js';
import walletReducer from "./wallet-reducer.js";
import bitcoinReducer from "./bitcoin-reducer.js";
import { combineReducers } from "redux";
export default combineReducers({
wallet: walletReducer,
...
})
bitcoin: bitcoinReducer
});
```
### The app
`App.js`
```jsx harmony
import React from 'react';
import ReactDOM from 'react-dom';
import { combineReducers } from 'redux';
import { Provider } from 'react-redux';
import { createStore } from 'redux';
import reducers from './reducers';
import React from "react";
import ReactDOM from "react-dom";
import { Provider } from "react-redux";
import { createStore, applyMiddleware } from "redux";
import thunk from "redux-thunk";
import logger from "redux-logger";
import reducers from "./reducers";
import Wallet from "./wallet.js";
const store = createStore(reducers);
const store = createStore(reducers, applyMiddleware(...[thunk, logger]));
ReactDOM.render(
<Provider store={store}>
<App/>
<Wallet />
</Provider>,
document.getElementById('root')
document.getElementById("root")
);
```
### Triger an action
`wallet.js`
```jsx harmony
import React, { Component } from "react";
import { connect } from "react-redux";
import actions from "./wallet-actions.js";
import * as thunks from "./bitcoin-thunks.js";
export class Wallet extends Component {
render() {
return (
<div>
<div>USD Balance: {this.props.wallet.balance}</div>
<div>Bitcoin Balance: {this.props.bitcoin.bitcoins}</div>
<button onClick={() => this.props.depositAmount(200)}>+200</button>
<button onClick={() => this.props.withdrawAmount(100)}>-100</button>
<button onClick={() => this.props.depositAmount(1000000000)}>
I want to be Billionaire
</button>
<button onClick={() => this.props.toBTC(this.props.wallet.balance)}>To BTC</button>
</div>
);
}
}
export default connect(({ wallet, bitcoin }) => ({ wallet, bitcoin }), {
...actions,
...thunks
})(Wallet);
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc