【问题标题】:Conditional navbar links 'Chat' and 'Logout' show only after on refresh条件导航栏链接“聊天”和“注销”仅在刷新后显示
【发布时间】:2019-10-16 09:33:04
【问题描述】:

我为反应应用程序构建了一个条件导航栏。登录后,如果有 JWT 令牌,它应该立即显示 Chat navlink 和 Logout navlink。但是,它仅在刷新时显示它们。为什么会这样,我该如何解决?

我使用 JWT 对象作为授权。

Navbar.js

import React, {Component} from 'react';
import {Navbar, Nav} from 'react-bootstrap';
import {Link} from 'react-router-dom';
import Logo from '../../logo/blacklogo.png';
import Logout from '../logoutNavLink/logout';
import getJwt from '../../utils/getJwt';
import '../navbar/style.css'

const jwt = getJwt();

class Navigation extends Component {
    state = {
       isAuthenticated: jwt
    }

    render() {

        return (
          <Navbar bg="light" expand="sm">
             <Navbar.Brand href="/">
               <img
                  src={Logo}
                  className="d-inline-block align-top"
                  alt="Soundbudz logo"
               />
            </Navbar.Brand>
            <Navbar.Toggle aria-controls="basic-navbar-nav" />
            <Navbar.Collapse id="basic-navbar-nav">

              {this.state.isAuthenticated ? (
                <Nav className="ml-auto">
                 <Link to="/chat">Chat</Link>
                 <Logout to="/">Logout</Logout>
                </Nav> 
              ):(
                <Nav className="ml-auto">
                 <Link to="/registration">Registration</Link>
                 <Link to="/login">Login</Link>
                </Nav>
             )}

            </Navbar.Collapse>
           </Navbar>
     )}
}

export default Navigation;

【问题讨论】:

  • 因为jwt 没有更新组件中的状态。您应该在组件内调用 jwt 更新函数或将 jwt 作为 &lt;Navigation /&gt; 组件的道具发送。

标签: reactjs jwt react-bootstrap


【解决方案1】:

您首先需要将“isAuthenticated”设置为 null 并将 jwt 作为道具发送到导航组件,然后创建一个函数,在该函数中检查 jwt 是否存在,如果存在则更改 isAuthenticated 的状态,以这种方式在条件你的回报会起作用

【讨论】:

  • 你能说明一下吗?我已将 isAuthenticated 设置为 null 并将 jwt 作为道具传递给导航组件,但它仍然在第二次刷新后呈现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-01
  • 2021-03-19
  • 2018-01-26
  • 2017-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多