亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果語句不能正常工作 [React hooks]

如果語句不能正常工作 [React hooks]

慕工程0101907 2023-12-19 16:51:08
我正在使用 React Hooks 開發一個簡單的網站。在該網站上,我想保護路由,如果我未獲得授權,該網站應將我重定向到登錄,否則轉到我想要訪問的路徑。我有以下代碼,無論狀態是真還是假,它總是進入 else 語句。我的問題是這怎么可能,或者我是否做錯了什么我沒有注意到的事情?import React from "react";import { Route, Redirect } from "react-router-dom";import Login from "../auth/Login";function PrivateRoute({ component, ...options }) {  let status = localStorage.getItem("isAuth");  console.log("before if ", status);  if (status === true) {    console.log("if", status);    return <Route {...options} component={component} />;  } else {    console.log("else", status);    return <Route {...options} component={Login} />;  }}export default PrivateRoute;
查看完整描述

2 回答

?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

比較status的方式是使用嚴格相等=== 因此,在您的情況下,它要求您的狀態值必須為 boolean 。但是當你從 localStorage 獲取它時,它是一個字符串。請記住=== 不一樣==

在許多瀏覽器中,本地存儲只能存儲string。因此,當您存儲布爾值 true 或 false 時,它實際上存儲字符串 "true" 或 "false" 。為了取回真正的布爾值,您可以使用 JSON。

或者就您的情況而言,您可以嘗試比較status === "true",看看是否有效。


查看完整回答
反對 回復 2023-12-19
?
Helenr

TA貢獻1780條經驗 獲得超4個贊

當您從本地存儲獲取一些值時,它是一個字符串,因此使用它如下:

  let status = localStorage.getItem("isAuth") === "true";


查看完整回答
反對 回復 2023-12-19
  • 2 回答
  • 0 關注
  • 168 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號