Я пытаюсь использовать Redux в своем реактивном проекте. Цель состоит в том, чтобы иметь компонент, который дает мне маркер. Я не хочу, чтобы этот токен хранился в моем App.js, поэтому я использую Redux. Но когда я пытаюсь сохранить изменения в магазине, это работает, но это не рендеринг. Вот мой код:
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 и handleLogin - это вызовы моего API с использованием axios. Я пропустил это, чтобы быть более понятным.