当前位置: 首页 > 知识库问答 >
问题:

React路由器PrivateRoute不工作。我错过了什么?

郑正阳
2023-03-14

我的react redux专用路由器不工作。它只是向我展示了我试图访问的路线的空白页。我的州没有在Redux开发工具上加载。这也可能是HashRouter的问题吗?My PrivateRoute组件:

import React from "react";
import { connect } from "react-redux";
import {Router, Redirect, withRouter } from "react-router-dom";
import PropTypes from 'prop-types';
class PrivateRoute extends React.Component {
  static propTypes = {
    isAuthenticated: PropTypes.bool,
  }
  isLoggedin = () => {
    return this.props.isAuthenticated;
  };

  render = () => {
    let { component: Component, ...rest } = this.props;

    return (
      <Router
        {...rest}
        render={(props) =>
          this.isLoggedin() ? (
            <Component {...props} />
          ) : props.location.pathname === "/" ? null : (
            <Redirect to="/" />
          )
        }
        />
    );
  };
}

const mapStateToProps = (state) => ({
    auth: state.auth,
    isAuthenticated: state.auth.isAuthenticated
})

export default withRouter(connect(mapStateToProps, null)(PrivateRoute));

我的应用程序,我正在包装我的路线,使其成为私人:

import {Provider} from 'react-redux';
import store from './store'
import {loadUser} from './actions/authActions'
import PrivateRoute from './components/auth/PrivateRoute'


class App extends React.Component {
    componentDidMount(){
        store.dispatch(loadUser())
    }

    render(){
        return (
            <Provider store={store}>
                <HashRouter basename="/">
                    <Navbar />
                    <Route exact  path="/" component={Home}/>
                    <PrivateRoute path="/aeons" component={AeonsList} />
                    <PrivateRoute path="/carrefours" component={CarrefoursList} />
                    <PrivateRoute path="/farmers" component={FarmersList} />
                    <PrivateRoute path="/foodhalls" component={FoodhallsList} />
                    <PrivateRoute path="/grands" component={GrandsList} />
                    <PrivateRoute path="/heros" component={HerosList} />
                    <PrivateRoute path="/primos" component={PrimosList} />
                    <PrivateRoute path="/ranchos" component={RanchsList} />
                </HashRouter>
            </Provider>

        )
    }
}

export default App;

共有1个答案

邵兴庆
2023-03-14

定义privateRoute组件时,需要导入路由,而不是路由器

从react-router-dom导入{Road};

检查一下这个

 类似资料:
  • 示例中提供了PrivateRoutehttps://reacttraining.com/react-router/web/example/auth-workflow 与Redux连接后不工作。 我的PrivateRoute看起来与原始版本几乎相同,但只连接到Redux,并在原始示例中使用它而不是fakeAuth。 用法和结果:- 不起作用,但需要

  • 我使用react和laravel开发了一个应用程序来显示酒店列表。当用户点击一个单一的酒店,我希望该酒店的细节显示在一种类型的‘单一’视图。然而,尽管在主列表视图中,我使用正确的路由模式链接到单个页面,并且我在路由器中定义了该模式,但当我单击该链接时,我会被带到一个“404 not found”页面。 编辑文章的编辑链接也是如此。 任何关于如何解决这个问题的想法都将非常感谢! 谢谢, 罗伯特·杨

  • 最近,我一直试图通过Kotlin制作一个注释处理器,但我似乎无法让它工作。所有东西都会编译,我不会出现任何错误,但当我检查jar文件的内容时,我看不到我试图创建的资源。 我已经尝试了几个小时的一切,我真的卡住了,所以只是寻求帮助:/我确实有一个随机类注释,看看它是否会工作,但没有运气。 注释类 处理器类 我的建筑

  • 以下是react router的一个示例,介绍如何为受保护的路由添加组件: https://reacttraining.com/react-router/web/example/auth-workflow 我已经尝试在我的Typescript项目中实现这个功能,使用上面的例子作为灵感。 组件/路线 连接器/专用线路 组件/专用路由 错误

  • 反应路由路径不工作 它在所有URL中仅显示产品组件 我已经灌输了react路由器dom,还导入了BrowserRouter作为路由器、交换机、路由、链路 到底是什么问题?我想不出来。

  • 重新加载后,私人路由重定向到授权开始之前的 /login,因为初始redux状态对它们两者都是假的。 这些是路由器的日志: PrivateRoute.js:16加载:false isAuthenticated:false PrivateRoute.js:16加载:true isAuthenticated:false PrivateRoute.js:16加载:false isAuthenticate