Extend redux store by common reducers
npm install redux-store-ancillaryreact redux + redux-thunk. Compatible with react-native and react-vr.npm install --save git+https://github.com/talibasya/redux-store-ancillary.git
OR
npm i -S redux-store-ancillary
Then attach reducers to your project:
``diff
import locationReducer from './location' // your reducers. Was here before
+ import notification from 'redux-store-ancillary/notification'
+ import spinner from 'redux-store-ancillary/spinner'
+ import popup from 'redux-store-ancillary/popup'
export const makeRootReducer = (asyncReducers) => {
return combineReducers({
location: locationReducer,
+ notification,
+ spinner,
+ popup,
...asyncReducers
})
}
`
Prepare container (examples):
- popup
- notification
- spinner
Connect action creators:
`diff
import React from 'react'
import { connect } from 'react-redux'
+ import { showSuccess, showError, cleanStack as cleanNotificationStack } from 'redux-store-ancillary/notification'
+ import { showPopup, hidePopup, updatePopup, cleanStack } from 'redux-store-ancillary/popup'
+ import { decorateThunkRequest } from 'redux-store-ancillary/utils'
import api from 'utils/api'
const mapDispatchToProps = {
+ showSuccess, showError, cleanNotificationStack,
+ showPopup, hidePopup, updatePopup, cleanStack,
+ getUsers: decorateThunkRequest({
+ onCall: () => new Promise(resolve => { setTimeout(() => resolve(api.getGitUsers()), 3000) }),
+ onSuccess: ({ dispatch }) => dispatch(showSuccess({ param: 3 }))
+ })
}
const mapStateToProps = (state) => ({
spinner: state.spinner
})
export class HomeView extends React.Component {
render () {
const isExistMyOwnSpinner = this.props.spinner.list.find(item => item.id === 'myownSpinner')
return (
export default connect(mapStateToProps, mapDispatchToProps)(HomeView)
``
TODO:
- Project based on examples above.
- Upgrade docs above (should be more readable) :)
- Describe all export methods and provider behavior