Страница 404 моего реагирующего проекта появляется, когда я направляюсь в / supportservice / settings - PullRequest
0 голосов
/ 27 февраля 2020

Всякий раз, когда я направляюсь на страницу / supportservice / settings, пока эта страница загружается, страница 404 отображается на экране, а через некоторое время на экране появляется страница / supportservice / settings. Я старался изо всех сил, чтобы страница 404 перестала отображаться при маршруте в / supportservice / settings. Служба поддержки имеет внутреннюю выборку данных, которая занимает немного времени, в то время как загрузка 404 страниц отображается на экране, кредиторы службы поддержки через некоторое время после выборки данных. Я был на этом в течение нескольких дней.

import React, { Suspense } from 'react';
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
import Loader from './loader';
import AuthProvider from './authContext';
const SupportServiceDashboard = React.lazy(() =>
  import('../components/support-service/Dashboard/supportServiceDashboard')
);
const PrivateRoute = React.lazy(() =>
  import('./privateRoute')
);
const SupportServiceConfirmationPage = React.lazy(() =>
  import('./adminConfirmationPage')
);
const SupportServiceResetPassword = React.lazy(() => 
  import('../components/support-service/registration/resetPassword')
);
const PersonnelDashboard = React.lazy(() => 
  import('../components/personnel/home/personnelDashboard')
);
const Signup = React.lazy(() =>
  import('../components/personnel/registration/signUp')
);
const SignIn = React.lazy(() =>
  import('../components/personnel/registration/signIn')
);
const ResetPassword = React.lazy(() =>
  import('../components/personnel/registration/resetPassword')
);
const ForgetPassword = React.lazy(() =>
  import('../components/personnel/registration/forgetPassword')
);
const SupportServiceSignUp = React.lazy(() =>
  import('../components/support-service/registration/supportServiceSignUp')
);
const SupportServiceSignIn = React.lazy(() =>
  import('../components/support-service/registration/supportServiceSignIn')
);
const SupportServiceForgetPassword = React.lazy(() =>
  import('../components/support-service/registration/supportServiceForgetPassword')
);
const ConfirmPage = React.lazy(() =>
  import('./confirmPage')
);
const SupportServiceNavBar = React.lazy(() =>
  import('../components/support-service/supportServiceNavbar')
);
const ManageTimesheet = React.lazy(() =>
  import('../components/support-service/Manage-timesheet/ManageTimesheet')
);
const SupportServiceSettings = React.lazy(() => 
  import('../components/support-service/settings_page/supportServiceSettings')
);
const PersonnelList = React.lazy(() => import('../components/support-service/settings_page/personnel-list'));

const PageNotFound = React.lazy(() => import('../utils/pageNotFound'));

const ClientList = React.lazy(() => import('../components/support-service/settings_page/clientList'));


function Routes() {
  const change = true;
  return (
    <div className="App">
      {/* <Nav /> */}
      <Router>
        <AuthProvider>
        <Switch>
          <Suspense fallback={<Loader />}>
            <Route exact path="/" component={SignIn} />
            <Route exact path="/signup" component={Signup} />
            <Route exact path="/login" component={SignIn} />
            <Route exact path="/forgotpassword" component={ForgetPassword} />
            <Route exact path="/passwordreset/:id" component={ResetPassword} />
            <Route exact path="/supportservice/passwordreset/:id" component={SupportServiceResetPassword} />
            <Route exact path="/supportservice/signup" component={SupportServiceSignUp} />
            <Route
              exact
              path="/supportservice/login"
              component={SupportServiceSignIn}
            />
            <Route
              exact
              path="/login/:id"
              component={ConfirmPage}
            />
            <Route
              exact
              path="/supportservice/login/:id"
              component={SupportServiceConfirmationPage}
            />
            <Route
              exact
              path="/supportservice/forgotpassword"
              component={SupportServiceForgetPassword}
            />
            {/* <Route
              exact
              path="/pagenotfound"
              component={PageNotFound}
            /> */}

            <Route
              exact
              path="/supportservice/forgotpassword"
              component={SupportServiceForgetPassword}
            />
            <Route
              exact
              path="/supportservice/nav"
              component={SupportServiceNavBar}
            />
            <Route
              exact
              path="/supportservice/manage-timesheet"
              component={ManageTimesheet}
            />


            <PrivateRoute exact path='/supportservice/dashboard' component={SupportServiceDashboard} role='support_service' redirect='/supportservice/login'/>
            <PrivateRoute exact path='/dashboard' component={PersonnelDashboard} role='personnel' redirect='/login'/>
            <PrivateRoute exact path='/supportservice/settings' component={SupportServiceSettings} role='support_service' redirect='/supportservice/login'/>
             <PrivateRoute path='/supportservice/settings/personnel_list' component={PersonnelList} role='support_service' redirect='/supportservice/login'/>
            <PrivateRoute path='/supportservice/settings/client_list' component={ClientList} role='support_service' redirect='/supportservice/login'/>

            <Route component={PageNotFound} />
          </Suspense>
        </Switch>
        </AuthProvider>
      </Router>
    </div>
  );
}

export default Routes;

Ответы [ 3 ]

0 голосов
/ 27 февраля 2020

Просто удалите путь = "" из PageNotFound Route.

       <Route exact component={PageNotFound} />
0 голосов
/ 28 февраля 2020

После нескольких дней исследований по этой проблеме я обнаружил, что мне нужно использовать ответную Suspense в качестве родительского контейнера для всего маршрута, это исправило ошибку. Спасибо всем, особенно тем, которые разместили некоторые предложения. Удачного кодирования:).

import React, { Suspense } from 'react';
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
import ReduxToastr from 'react-redux-toastr';
import Loader from './loader';
const SupportServiceDashboard = React.lazy(() =>
    import('../components/support-service/Dashboard/supportServiceDashboard')
);
const PrivateRoute = React.lazy(() => import('./privateRoute'));
const SupportServiceConfirmationPage = React.lazy(() => import('./adminConfirmationPage'));
const SupportServiceResetPassword = React.lazy(() =>
    import('../components/support-service/registration/resetPassword')
);
const PersonnelDashboard = React.lazy(() => import('../components/personnel/home/personnelDashboard'));
const Signup = React.lazy(() => import('../components/personnel/registration/signUp'));
const SignIn = React.lazy(() => import('../components/personnel/registration/signIn'));
const ResetPassword = React.lazy(() => import('../components/personnel/registration/resetPassword'));
const ForgetPassword = React.lazy(() => import('../components/personnel/registration/forgetPassword'));
const SupportServiceSignUp = React.lazy(() =>
    import('../components/support-service/registration/supportServiceSignUp')
);
const SupportServiceSignIn = React.lazy(() =>
    import('../components/support-service/registration/supportServiceSignIn')
);
const SupportServiceForgetPassword = React.lazy(() =>
    import('../components/support-service/registration/supportServiceForgetPassword')
);
const ConfirmPage = React.lazy(() => import('./confirmPage'));
// const SupportServiceNavBar = React.lazy(() => import('../components/support-service/supportServiceNavbar'));
const ManageTimesheet = React.lazy(() => import('../components/support-service/Manage-timesheet/ManageTimesheet'));
const SupportServiceSettings = React.lazy(() =>
    import('../components/support-service/settings_page/supportServiceSettings')
);
const PersonnelList = React.lazy(() => import('../components/support-service/settings_page/personnel-list'));

const PageNotFound = React.lazy(() => import('../utils/pageNotFound'));

const ClientList = React.lazy(() => import('../components/support-service/settings_page/clientList'));

function Routes() {
    return (
        <Suspense fallback={<Loader />}>
            <Router>
                {/* <div className="App"> */}
                <ReduxToastr
                    timeOut={5000}
                    newestOnTop={false}
                    preventDuplicates
                    position="top-center"
                    getState={state => state.toastr}
                    transitionIn="fadeIn"
                    transitionOut="fadeOut"
                    progressBar
                    closeOnToastrClick
                />
                <Switch>
                    <Route exact path="/" component={SignIn} />
                    <PrivateRoute path="/" exact component={PersonnelDashboard} role="personnel" redirect="/login" />
                    <PrivateRoute
                        path="/supportservice"
                        exact
                        component={SupportServiceDashboard}
                        role="support_service"
                        redirect="/supportservice/login"
                    />
                    <Route path="/signup" exact component={Signup} />
                    <Route path="/login" exact component={SignIn} />
                    <Route path="/forgotpassword" exact component={ForgetPassword} />
                    <Route path="/passwordreset/:id" exact component={ResetPassword} />
                    <Route exact path="/supportservice/passwordreset/:id" component={SupportServiceResetPassword} />
                    <Route path="/supportservice/signup" component={SupportServiceSignUp} />
                    <Route exact path="/supportservice/login" component={SupportServiceSignIn} />
                    <Route exact path="/login/:id" component={ConfirmPage} />
                    <Route exact path="/supportservice/login/:id" component={SupportServiceConfirmationPage} />
                    <Route path="/supportservice/forgotpassword" component={SupportServiceForgetPassword} />
                    <Route exact path="/supportservice/forgotpassword" component={SupportServiceForgetPassword} />
                    <Route exact path="/supportservice/manage-timesheet" component={ManageTimesheet} />

                    <PrivateRoute
                        exact
                        path="/supportservice/dashboard"
                        component={SupportServiceDashboard}
                        role="support_service"
                        redirect="/supportservice/login"
                    />
                    <PrivateRoute exact path="/dashboard" component={PersonnelDashboard} role="personnel" redirect="/login" />
                    <PrivateRoute
                        exact
                        path="/supportservice/settings"
                        component={SupportServiceSettings}
                        role="support_service"
                        redirect="/supportservice/login"
                    />
                    <PrivateRoute
                        exact
                        path="/supportservice/settings/personnel_list"
                        component={PersonnelList}
                        role="support_service"
                        redirect="/supportservice/login"
                    />
                    <PrivateRoute
                        path="/supportservice/settings/client_list"
                        component={ClientList}
                        role="support_service"
                        redirect="/supportservice/login"
                    />
                    <Route component={PageNotFound} />
                </Switch>
            </Router>
        </Suspense>
    );
}

export default Routes;
0 голосов
/ 27 февраля 2020

Попробуйте <Route exact path='*' component={PageNotFound} />

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...