【问题标题】:How to get authetication status in react js component?如何在 React js 组件中获取身份验证状态?
【发布时间】:2019-04-15 15:43:40
【问题描述】:

下面是我项目的 react 组件的代码。 this.props.isAuthenticated 在我返回组件时正在工作,但是当我在 componentDidMount 中打印 this.props.isAuthenticated 时,我得到了错误(打印注销)。如何在 react 组件中获取身份验证状态 true 或 false?

我已经添加了 redux 并且登录注销工作正常。

import React, { Component } from "react";
import { NavLink, Route, withRouter } from "react-router-dom";
import NewsListView from "../Container/NewsListView";
import StatsView from "../Container/StatsView";
import VotingView from "../Container/VotingView.js";
import Rightsidebar from "../Container/rightsidebar";
import Footer from "./footer";
import Loginform from "../Container/loginform";
import SignUp from "../Container/SignUp";
import { connect } from "react-redux";
import * as actions from "../Store/actions/auth";

class Header extends React.Component {
  componentDidMount() {
    {
      this.props.isAuthenticated ? console.log("login") : console.log("logout");
    }
  }
  render() {
    return (
      <div>
        <nav className="navbar navbar-inverse">
          <div className="container-fluid">
            <div className="navbar-header">
              <button
                type="button"
                className="navbar-toggle"
                data-toggle="collapse"
                data-target="#myNavbar"
              >
                <span className="icon-bar" />
                <span className="icon-bar" />
                <span className="icon-bar" />
              </button>
              <NavLink className="navbar-brand" to="/">
                Save4thPillar
              </NavLink>
            </div>
            <div className="collapse navbar-collapse" id="myNavbar">
              <ul className="nav navbar-nav">
                <li>
                  <NavLink to="/" className="navlink">
                    Home
                  </NavLink>
                </li>

                <li>
                  <NavLink to="/news" className="navlink">
                    news
                  </NavLink>
                </li>
                <li>
                  <NavLink to="/stats" className="navlink">
                    stats
                  </NavLink>
                </li>
                {this.props.isAuthenticated ? (
                  <li>
                    <NavLink
                      to="/logout"
                      onClick={this.props.logout}
                      className="navlink"
                    >
                      Logout
                    </NavLink>
                  </li>
                ) : (
                  <li>
                    <NavLink to="/login" className="navlink">
                      Login
                    </NavLink>
                  </li>
                )}
              </ul>
            </div>
          </div>
        </nav>
        <div className="container">
          <div className="row">
            <div className="col-md-8">
              <Route exact path="/" component={VotingView} {...this.props} />
              <Route exact path="/news" component={NewsListView} />
              <Route exact path="/stats" component={StatsView} />
              <Route exact path="/login" component={Loginform} />
              <Route exact path="/signup" component={SignUp} />
            </div>
            <div className="col-md-4">
              <Rightsidebar />
            </div>
            <div />
          </div>
          <Footer />
        </div>
      </div>
    );
  }
}

const mapDispatchToProps = dispatch => {
  return {
    logout: () => dispatch(actions.logout())
  };
};

export default withRouter(
  connect(
    null,
    mapDispatchToProps
  )(Header)
);

【问题讨论】:

  • 您的用户或您的状态是否处于您的 redux 状态?
  • 在 redux 状态下,我获得了带有令牌的 AUTH_SUCCESS,因此用户已登录。

标签: javascript reactjs redux


【解决方案1】:

您应该实现 Header 组件的构造函数。 to use props in lifecycles

class Header extends React.Component {
  componentDidMount() {
  {
    this.props.isAuthenticated ? console.log("login") : console.log("logout");
  }

  constructor(props){
    super(props);
  }
  [...]
}

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 2016-08-09
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 2012-07-18
    • 1970-01-01
    相关资源
    最近更新 更多