dialog
A demo demonstrating using Redux with React. Uses React, Redux, and React-Redux. Uses babel to handle some ES6 syntax, and Lodash for some syntactic sugar.
by vaheed akhtar
August 16, 2018
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.0/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.0/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/redux/3.5.2/redux.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-redux/4.4.5/react-redux.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.13.0/polyfill.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.14.2/lodash.js"></script>
<div id="content">
<!-- Yield to React -->
</div>
CSS
h1 {
margin: 0;
padding: 0;
}
html, body, .app {
margin: 0;
padding: 0;
position: relative;
width: 100%;
height: 100vh;
}
.popup {
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
background-color: rgba(0,0,0, 0.5);
}
.popup_inner {
position: absolute;
left: 25%;
right: 25%;
top: 25%;
bottom: 25%;
margin: auto;
background: white;
}
Babel + JSX
class Popup extends React.Component {
render() {
return (
<div className='popup'>
<div className='popup_inner'>
<h1>{this.props.text}</h1>
<button onClick={this.props.closePopup}>close me</button>
</div>
</div>
);
}
}
class App extends React.Component {
constructor() {
super();
this.state = {
showPopup: false
};
}
togglePopup() {
this.setState({
showPopup: !this.state.showPopup
});
}
render() {
return (
<div className='app'>
<h1>hihi</h1>
<button onClick={this.togglePopup.bind(this)}>show popup</button>
<button onClick={() => {alert('woooooooot?');}}>try me when popup is open</button>
{this.state.showPopup ?
<Popup
text='Close Me'
closePopup={this.togglePopup.bind(this)}
/>
: null
}
</div>
);
}
};
ReactDOM.render(
<App />,
document.getElementById('content')
);