Skip to content

Instantly share code, notes, and snippets.

@azamsharp
Created July 24, 2018 13:42
Show Gist options
  • Save azamsharp/871ac13bebd83f8f49ecdfe20b881a6b to your computer and use it in GitHub Desktop.
Save azamsharp/871ac13bebd83f8f49ecdfe20b881a6b to your computer and use it in GitHub Desktop.
import React, {Component} from 'react'
import {connect} from 'react-redux'
class Counter extends Component {
constructor(props) {
super(props)
}
render() {
let resultItems = this.props.results.map((result) => {
return (
<li>{result}</li>
)
})
return (
<div>
<h1>{this.props.counter}</h1>
<button onClick={this.props.onAddCounter}>Increment +1</button>
<hr />
<button onClick={this.props.onStoreResult}>Store Result</button>
<ul>
{resultItems}
</ul>
</div>
)
}
}
const mapStateToProps = (state) => {
return {
counter : state.counter,
results : state.results
}
}
const mapDispatchToProps = (dispatch) => {
return {
onIncrementCounter : () => dispatch({type : "INCREMENT_COUNTER"}),
onAddCounter : () => dispatch({type : "ADD_COUNTER", value : 10}),
onStoreResult : () => dispatch({ type : "STORE_RESULT"})
}
}
export default connect(mapStateToProps, mapDispatchToProps)(Counter)
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import registerServiceWorker from './registerServiceWorker';
import {BrowserRouter, Route, Switch} from 'react-router-dom'
import {MovieList} from './components/MovieList'
import {MovieDetails} from './components/MovieDetails'
import {createStore} from 'redux'
import reducer from './store/reducer'
import { Provider } from 'react-redux'
import Counter from './components/Counter'
const store = createStore(reducer,window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__())
ReactDOM.render(
<BrowserRouter>
<Provider store = {store}>
<App>
<Switch>
<Route path = "/movies/:movieId" component = {MovieDetails} />
<Route path = "/counter" component = {Counter} />
<Route path = "/" component = {MovieList} />
</Switch>
</App>
</Provider>
</BrowserRouter>
, document.getElementById('root'));
registerServiceWorker();
const initialState = {
counter : 0,
results : []
}
const reducer = (state = initialState, action) => {
switch(action.type) {
case "INCREMENT_COUNTER":
return {
...state,
counter : state.counter + 1
}
case "ADD_COUNTER":
return {
...state,
counter : state.counter + action.value
}
case "STORE_RESULT":
return {
...state,
results : state.results.concat(state.counter)
}
}
return state
}
export default reducer
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment