redux-dryer
Advanced tools
Comparing version 0.1.5 to 0.1.6
{ | ||
"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", |
113
README.md
@@ -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); | ||
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
89248
8
2598
156
1