Purpose of this demo is to understand redux easily. You can find step by step guide here to understand this demo properly.
First install react-redux
npm install react-redux --save
Now, you need to define provider and store in index.js
import { Provider } from 'react-redux';
import { store } from './reducers';
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
);
Now, we need to create two files :
- action/index.js
export const tabClicked = (activeTab) => ({
type: 'tabClicked',
activeTab: activeTab
});
- reducers/index.js
import { combineReducers, createStore } from 'redux';
// Initial State
const initialState = {
activeTab: 1
}
// reducers part
export const actionReducer = (state = initialState, action) => {
switch (action.type) {
case 'tabClicked':
return {
...state,
activeTab: action.activeTab
}
default:
return state;
}
};
export const reducers = combineReducers({
actionReducer
});
// store part
export const store = createStore(reducers);
import { tabClicked } from './../../actions';
class uplicateTabComponent extends Component {
render() {
return (
<div>
</div>
);
}
}
function mapStateToProps(state) {
return {
activeTab: state.actionReducer.activeTab,
}
}
const mapDispatchToProps = {
tabClicked
};
const TabContainer = connect(
mapStateToProps,
mapDispatchToProps
)(TabComponent);
We can use props and event in html. You just need to put html in redner function in component.
<a className={"nav-item nav-link" + (this.props.activeTab === 1 ? ' active' : '')} id="nav-tab1-tab" data-toggle="tab" href="#nav-tab1" role="tab" aria-controls="nav-tab1" aria-selected="true" onClick={() => this.props.tabClicked(1)}>Tab 1</a>
Run npm start
for a dev server. Navigate to http://localhost:3000/
. The app will automatically reload if you change any of the source files.
Checkout full blog here