@interpals/react-redux-modal
Version:
react-redux-modal is a React modal implemented with Redux
112 lines (93 loc) • 2.98 kB
Markdown
# /react-redux-modal
##`react-redux-modal` [demo](http://diegoddox.github.io/react-redux-modal/)
## Implementation Guide
##### 1. Installation
`npm install --save react-redux-modal`
##### 2. Add the `react-redux-modal` css link to your app
```
<link href="http://diegoddox.github.io/react-redux-modal/0.5/react-redux-modal.min.css" rel="stylesheet" type="text/css">
```
##### 3. The third thing you need to do is to add the `react-redux-modal` `reducer` to Redux.
```
import {createStore, combineReducers} from 'redux'
import {reducer as modalReducer} from 'react-redux-modal'
const reducers = {
// ... other reducers ...
modals: modalReducer // <- Mounted at modals.
}
const reducer = combineReducers(reducers)
const store = createStore(reducer)
```
##### NOTE: The default mount point for `react-redux-modal` is `modals`.
##### 4. Add the `react-redux-modal` React component to the root of your app
```
import {Provider} from 'react-redux'
import ReduxModal from 'react-redux-modal'
<Provider store={store}>
<div>
... other things like router ...
<ReduxModal />
</div>
</Provider>
```
##### 5. Add the `react-redux-modal` `modal` emitter
The `modal` method use [eventemitter3](https://github.com/primus/eventemitter3) to dispatch the actions
```
import React, {Component} from 'react'
import {modal} from 'react-redux-modal' // The modal emitter
```
Create a `component` that will be injected in the modal
```
class myModalComopnent extends Component {
constructor(props) {
super(props);
console.log('## MODAL DATA AND PROPS:', this.props);
}
removeThisModal() {
this.props.removeModal();
}
render() {
return (
<div>
<p>this is my modal</p>
<button
type="button"
onClick={this.removeThisModal.bind(this)}>
close this modal
</button>
</div>
);
}
}
```
```
export class YourComponent extends Component {
constructor(props) {
super(props);
}
addModal() {
modal.add(myModalComopnent, {
title: 'This is my modal',
size: 'medium', // large, medium or small,
closeOnOutsideClick: false // (optional) Switch to true if you want to close the modal by clicking outside of it,
hideTitleBar: false // (optional) Switch to true if do not want the default title bar and close button,
hideCloseButton: false // (optional) if you don't wanna show the top right close button
//.. all what you put in here you will get access in the modal props ;)
});
}
render() {
return <button onClick={this.addModal.bind(this)}>Add modal</button>;
}
}
```
The `modal` `add` method takes two arguments, first a `react` `component` and a `object` that will specify the modal `title`, `size` and `data`
# Run a local demo
```
git clone https://github.com/diegoddox/react-redux-modal.git
cd react-redux-modal
npm install
npm start
```
open your browser at `http://localhost:3001`
# TODO
create test.