I am simply trying to connect() my LoginPage (component) to my Redux Store and dispatch in action via a onClick (event). When I console.log(this.props) my dispatch handler login() isn't in the component's props.
GitHub Repo -- https://github.com/jdavis-software/demo.git
Question: Why isn't my Redux Store either connection or dispatching the actions?
LoginPage:
import React, { Component} from 'react'; import { connect } from 'react-redux'; export class LoginPage extends Component<any> { render(){ console.log('props doesnt have contain - login(): ', this.props) return (<button onClick={ () => '' }>Login</button>) } } const mapProps = state => ({ user: state.user }) const dispatchProps = (dispatch) => { return { login: () => dispatch({ type: 'USER_LOGGED_IN', payload: true}) } } export default connect(mapProps,dispatchProps)(LoginPage) Redux Configuration:
import { IStore, IUser } from '@interfaces'; import { createStore, combineReducers } from 'redux'; import ReduxPromise from 'redux-promise'; // reducers import userReducer from './user.reducer'; // define the intial global store state const initialState:IStore = { user: { isAuthenticated: false } } const appReducer = combineReducers({user: userReducer}) export default createStore(appReducer,initialState); User Reducer:
// initial state const initalState:IUser = { isAuthenticated: false } // reducer const userReducer = (state:IUser = initalState, { type, payload}: IPayload): IUser => { console.log('user reducer start', state) switch (type) { case 'USER_LOGGED_IN': state = { ...state, isAuthenticated: payload } break; default: return state; } return state; }; export default userReducer; Root Page:
import React from 'react'; import { render } from 'react-dom'; import { Provider } from 'react-redux'; // styles import './index.scss'; // pages import { App } from '@pages'; // store import store from './core/store/store'; render( <Provider store={store}> <App/> </Provider>, document.getElementById('app') );