title: React-Redux state lost after refresh
body: <p>I'm really new to React and Redux, I've been following Stephen Grider's Advanced React and Redux course and I'm doing the client side of the authentication. I already have a token saved on my local storage and everything seemed to work fine until I refreshed the page. When I sign in/sign up the navigation changes to display the log out button but then if I manually refresh the page the navigation changes back to display the sign in/sign up buttons. </p>
  
  <p>I'm really new to this and have no idea what should I include as code snippets. I'll leave the reducer and the actions/index.js. Also <a href="https://github.com/OmarAguinaga/hoopit-token/tree/client-side" rel="noreferrer">this</a> is a lik for my git repository. </p>
  
  <p>actions/index.js</p>
  
  <pre><code>import axios from 'axios';
  import { browserHistory } from 'react-router';
  import { push } from 'react-router-redux';
  import { AUTH_USER, UNAUTH_USER, AUTH_ERROR } from './types';
  
  const API_URL = 'http://localhost:3000';
  
  export function signinUser({ username, password }) {
    return function(dispatch) {
      // Submit username/password to the server
      axios
        .post(`${API_URL}/signin`, { username, password })
        .then(response =&gt; {
          // If request is good...
          // - Update state o indicate user is authenticated
          dispatch({ type: AUTH_USER });
          // - Save the JWT token to local storage
          localStorage.setItem('token', response.data.token);
          // - Redirect to the route '/feature'
          browserHistory.push('/feature');
        })
        .catch(() =&gt; {
          // If request is bad...
          // -Show an error to the user
          dispatch(authError('Bad login info'));
        });
    };
  }
  
  export function signupUser({ username, email, password }) {
    return function(dispatch) {
      axios
        .post(`${API_URL}/signup`, { username, email, password })
        .then(response =&gt; {
          dispatch({ type: AUTH_USER });
          localStorage.setItem('token', response.data.token);
          browserHistory.push('/feature');
        })
        .catch(response =&gt; {
          // TODO
          console.log(response);
          dispatch(authError('There was an error'));
        });
    };
  }
  
  export function authError(error) {
    return {
      type: AUTH_ERROR,
      payload: error
    };
  }
  
  export function signoutUser() {
    localStorage.removeItem('token');
    return { type: UNAUTH_USER };
  }
  </code></pre>
  
  <p>reducer/auth_reducer.js</p>
  
  <pre><code>import { AUTH_USER, UNAUTH_USER, AUTH_ERROR } from '../actions/types';
  export default function(state = {}, action) {
    switch (action.type) {
      case AUTH_USER:
        return { ...state, error: '', authenticated: true };
      case UNAUTH_USER:
        return { ...state, authenticated: false };
      case AUTH_ERROR:
        return { ...state, error: action.payload };
    }
  
    return state;
  }
  </code></pre>
  
  <p>Thanks in advance, if you need any extra code snippet just please let me know.</p>