I'm trying to use Redux in my react project. The objective is to have a component that give me a token. I wan't this token to be stored in my App.js so i use redux. But when i try to save changes to the store, it works but it's not re rendering. Here's my code :
App.js
import React, { Component } from 'react';
import LoginApi from './components/LoginApi.js';
import { createStore } from 'redux'
import './App.css';
function pops(state = { sessionToken: '', isLoggedIn: false, group: '' }, action) {
const { sessionToken, isLoggedIn, group, type } = action;
switch (type) {
case 'LOGIN':
return { sessionToken, isLoggedIn, group };
case 'LOGOUT':
return { sessionToken: '', isLoggedIn: false, group: '' };
default:
return { sessionToken, isLoggedIn, group };
}
}
const store = createStore(pops, { sessionToken: '', isLoggedIn: false, group: '', });
class App extends Component {
render() {
return (
<div className="App container-fluid">
<div className="row text-center">
<div className="col-3"><LoginApi store={store} /></div>
</div>
</div>
);
}
}
export default App;
LoginApi.js
import React from 'react';
import './LoginApi.css';
class LoginApi extends React.Component {
handleLogout() {
this.props.store.dispatch({ type: "LOGOUT"});
}
handleLogin() {
this.props.store.dispatch({ type: "LOGIN", sessionToken, isLoggedIn: true, group });
}
render() {
const { isLoggedIn, sessionToken } = this.props.store.getState();
console.log(this.props.store.getState());
return (
<div className="Login">
{(isLoggedIn === true && sessionToken !== "") ?
<button type="button" className="btn btn-danger" onClick={this.handleLogout}>Logout</button>
:
<button type="button" className="btn btn-primary" onClick={this.handleLogin}>Login</button>
}
</div>
);
}
}
export default LoginApi;
handleLogout and handleLogin are calls to my API using axios. I skiped this to be clearer.