#reactjs #react-router
#reactjs #react-router
Вопрос:
Я потратил много времени на воспроизведение проблемы в codesandbox: https://codesandbox.io/s/debugrouter-fcznq
Если кто-нибудь может понять, почему тестовый компонент не отображается: https://fcznq.csb.app/test
Я был бы очень признателен.
…
Однако по какой-то странной причине https://fcznq.csb.app/access-denied рендерится просто отлично.
И https://fcznq.csb.app / рендерится просто отлично
Маршруты следующие…
import "react-app-polyfill/ie11";
import "react-app-polyfill/stable";
import React from "react";
import { render } from "react-dom";
import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
import "./index.css";
import * as serviceWorker from "./serviceWorker.js";
// Components
import App from "./App";
import AccessDenied from "./Pages/AccessDenied.js";
import Home from "./Pages/Home.js";
import Test from "./Pages/Test.js";
// Globals
import { frontendLinks } from "./Globals/index.js";
render(
<Router basename={process.env.PUBLIC_URL}>
<App>
<Switch>
<Route exact path={frontendLinks.accessDenied} component={AccessDenied} />
<Route exact path={frontendLinks.test} component={Test} />
<Route exact path={frontendLinks.home} component={Home} />
</Switch>
</App>
</Router>,
document.getElementById("root")
);
serviceWorker.unregister();
App.js
import React, { useState } from "react";
import { Helmet } from "react-helmet";
import UserImage from "./img/user-default.png";
// Components
import Header from "./Components/Header.js";
// Globals
import { guestUserId, userTypeIds } from "./Globals/index.js";
import { GlobalContext } from "./Globals/GlobalContext.js";
function App(props) {
// Variables
const [userIdentity] = useState({
userId: guestUserId,
name: "",
userTypeId: userTypeIds.guest,
lobTagIds: [],
photoUrl: UserImage,
email: "",
isLoaded: false
});
// Render
return (
<div className="app">
<Helmet>
<meta charSet="utf-8" />
<title>Project</title>
</Helmet>
<GlobalContext.Provider value={{ userIdentity }}>
<Header />
<div className="app-container">{props.children}</div>
</GlobalContext.Provider>
</div>
);
}
export default App;
AccessDenied.js — РАБОТАЕТ
import React from "react";
import { Helmet } from "react-helmet";
const AccessDenied = () => {
return (
<div className="page-container">
<Helmet>
<title>Access Denied</title>
<meta name="description" content="Nested component" />
</Helmet>
<h1>Access Denied</h1>
</div>
);
};
export default AccessDenied;
Home.js — РАБОТАЕТ
import React from "react";
const Home = () => {
return (
<div className="page-container">
<h1>This is the Home page</h1>
</div>
);
};
export default Home;
Test.js — НЕ РАБОТАЕТ
import React from "react";
const Test = () => {
return (
<div className="page-container">
<h1>This is the Test page</h1>
</div>
);
};
export default Test;
Ответ №1:
у вас просто есть изменения в variable.js файл
const frontendLinks = {
accessDenied: "/access-denied",
home: "/",
test: "/test" // put a slash before path
};
Комментарии:
1. Вау, спасибо. Я знал, что это что-то простое. Хороший улов!
2. Сначала я подумал, что проблема в том, что имя функции ‘Test’ может быть любой зарезервированной переменной или чем-то в этом роде: D
3. Я тоже. Рад, что я смог взглянуть на это вторым взглядом. TBH У меня было то же самое,
admin...
и я подумал, что это тоже зарезервированные имена ключей.