A Higher Order Component using react-redux to keep dialog state in a Redux store.
This package was forked from redux-dialog.
The easiest way to use redux-dialog-extended is to install it from NPM and include it in your own React build process
npm install --save redux-dialog-extended
or use yarn
yarn add --save redux-dialog-extended
The first step is to combine the redux-dialog-extended reducer with your own application reducers
import { createStore, combineReducers } from 'redux';
import { dialogReducer } from 'redux-dialog-extended';
const reducers = {
// Other reducers here
dialogs: dialogReducer
}
const reducer = combineReducers(reducers);
const store = createStore(reducer);
Decorate your component with reduxDialog.
import reduxDialog from 'redux-dialog-extended';
const BasicDialog = () => (
<div>
My awesome modalbox!
</div>
)
const Dialog = reduxDialog({
name: 'Sign up dialog' // unique name - you can't have two dialogs with the same name (will be used as aria-label as well)
})(BasicDialog);
Use redux-dialog-extended's actions to show and hide the dialog
import { openDialog, closeDialog } from 'redux-dialog-extended';
const MyComponent = () => (
<a href="#" onClick={() => dispatch(openDialog('Sign up dialog'))}></a>
)
The reduxDialog method only requires the name property to work. The rest of the optional properties can be Any valid react-modal options.
name
: stringA unique id for this dialog
When dispatching the action to open the dialog, adding a payload as the second parameter to openDialog
will be available within the dialog as the payload
property.
dispatch(openDialog('accountDialog', { accountName: 'My Account' }));
const BasicDialog = ({ payload }) => (
<div>
{payload.accountName}
</div>
<div>
My awesome modalbox!
</div>
)
Clone this repo then run:
yarn install
yarn start
Then open http://localhost:8080 to see a working example.
yarn build
should do the trick.
Work in progress