我只想阻止用户访问/profile页,直到用户登录,如果用户试图通过手动键入104进入路径访问个人资料页,那么他/她将重定向到/login页.因此,我已经成功地将用户重定向到/login页面,但如果通过在路径URL中键入/profile来重定向用户,则路径不会改变.

重定向完成后如何更改路径?

代码:

//App.js

const [profileUser, setProfileUser] = useState();
useEffect(() => {
    auth.onAuthStateChanged((user) => {
        if (user) {
            setProfileUser(user);
        } else {
            setUserName(null);
        }
    });
    }, [profileUser]);

//JSX 
return (
        <div>
            <Header loggedUser={profileUser} />
            <MainWrapper>
                <Routes>
                    <Route path="/login" element={<Login />} />
                    <Route path="/signup" element={<SignUp />} />
                    <Route
                        path="/profile"
                        element={
                            !profileUser ? <Login /> : <Profile loggedUser={profileUser} />
                        }
                    />
                </Routes>
            </MainWrapper>
            <Footer />
        </div>
    );

推荐答案

您希望实际重定向到"/login"路由,而不是呈现Login组件.

<Routes>
  <Route path="/login" element={<Login />} />
  <Route path="/signup" element={<SignUp />} />
  <Route
    path="/profile"
    element={profileUser
      ? <Profile loggedUser={profileUser} />
      : <Navigate to="/login" replace /> // <-- Redirect
    }
  />
</Routes>

Javascript相关问答推荐

了解Node.js中的EventEums和浏览器中的addEventEums之间的关系

使用javascript将Plotly Expandable Sparkline转换为HighCharter Plot在bslib卡中

Spring boot JSON解析错误:意外字符错误

如何在Obsidian dataview中创建进度条

配置WebAssembly/Emscripten本地生成问题

引用在HTMLAttributes<;HTMLDivElement>;中不可用

如何避免页面第一次加载时由于CSS样式通过JavaScript更改而出现闪烁

ChartJs未呈现

如何迭代叔父元素的子HTML元素

面对代码中的错误作为前端与后端的集成

JS Animate()方法未按预期工作

FireBase云函数-函数外部的ENV变量

JavaScript将字符串数字转换为整数

在JavaScript中,有没有一种方法可以迭代字符串的词法标记?

TabNavigator和StackNavigator之间的Reaction Native中的导航问题

React数组查找不读取变量

更改管线时不渲染组件的react

JavaScript -如何跳过某个字符(S)来打乱字符串中的字符

此上下文在JavaScript中

如何使用Reaction/Redux创建购物车逻辑?