错误,无法读取未定义的属性'状态'",注销函数REACTJS。无法读取未定义的属性'status'",注销函数REACTJS。

问题描述 投票:0回答:1

screen capture when I click on logout after login我有一个php代码(logout.php),它可以破坏用户的会话,我想在用户点击NavBar中的'注销'(在代码末尾)时调用我的handleLogOut函数。我想在用户点击NavBar中的 "注销"(在代码末尾)时,调用我的handleLogOut函数,如果状态响应为200,则会话被关闭,用户被重定向到我的登录页面。如果状态响应为200,会话被关闭,用户被重定向到我的登录页面。我有一个错误:"navBar.js:24 Uncaught (in promise) TypeError: Cannot read property 'status' of undefined".请问我可以在我的代码中添加或修改什么?

navBar.js.php:24未抓到(在承诺中)TypeError: Cannot read property 'status' undefined".请问我可以在我的代码中添加或修改什么?

import React, { Component } from "react";

    import { MDBNavbar,  MDBNavbarNav, MDBNavItem, MDBNavLink, MDBNavbarToggler, MDBCollapse, MDBDropdown,
    MDBDropdownToggle, MDBDropdownMenu, MDBDropdownItem,  } from "mdbreact";
    import axios from "axios";
    import { Redirect} from 'react-router';


class NavbarPage extends Component {
state = {
  isOpen: false,
  logOut: false,
};

handleLogOut () {
  axios.get("http://localhost:8888/login/logout.php")

  .then(function(response){
    console.log(response);
    this.setState({logOut: true});
  }.bind(this))

  .catch((error) => {
    if(error.response.status === 403){
      console.log(error);
    }
  });
}

toggleCollapse = () => {
  this.setState({ isOpen: !this.state.isOpen });
}

render() {
  const bgRed = {backgroundColor: 'rgb(83, 4, 4)'};
  const{logOut} = this.state;


  if(logOut){
    return <Redirect to="/login"/>;
  }

  return (
      <MDBNavbar style={bgRed} dark expand="md" scrolling fixed="top">

        <MDBNavbarToggler onClick={this.toggleCollapse} />
        <MDBCollapse id="navbarCollapse3" isOpen={this.state.isOpen} navbar>
          <MDBNavbarNav left>
          <MDBNavItem active  className="M">
              <MDBNavLink to="/acceuil"><strong>MyBibli</strong></MDBNavLink>
            </MDBNavItem>
            <MDBNavItem active>
              <MDBNavLink to="/mesLivres">Mes livres</MDBNavLink>
            </MDBNavItem>
            <MDBNavItem>
              <MDBNavLink to="/ajoutLivre">Ajouter un livre</MDBNavLink>
            </MDBNavItem>
            </MDBNavbarNav>

            <MDBNavItem>
              <MDBDropdown>
                <MDBDropdownToggle nav caret>
                  <div className="d-none d-md-inline">My account</div>
                </MDBDropdownToggle>
                <MDBDropdownMenu className="dropdown-default">
                  <MDBDropdownItem href="#!">Gérer mon compte</MDBDropdownItem>
                  <MDBDropdownItem href="#!" onClick = {this.handleLogOut} >Log Out</MDBDropdownItem>
                </MDBDropdownMenu>
              </MDBDropdown>
            </MDBNavItem>


          </MDBNavbarNav>
        </MDBCollapse>
      </MDBNavbar>
    );
  }
}

export default NavbarPage;

logout.php:

<?php   
        session_start();
        if(isset($_SESSION['User'])){
        session_destroy();
        http_response_code(200);
        }
        else {
        http_response_code(403);
        }
?>
javascript php reactjs axios logout
1个回答
0
投票

你需要确保错误对象有一个叫做 "response "的属性。

.catch((error) => {
  if(error.response && error.response.status === 403){
    console.log(error);
  }
});

上面的代码片段很可能不会完全解决你的问题,但希望能让你更接近解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.