javascript - 使用 react-router-dom v6 路由到新页面时,React 组件不呈现

标签 javascript reactjs react-router react-router-dom

我正在尝试在我的 React 应用程序中设置路由。我没有收到任何错误并且应用程序没有中断,但是当我导航到新页面时没有显示任何内容。我正在使用 react-router-dom v6,“Switch”已替换为“Routes”,组件已替换为元素:https://reacttraining.com/blog/react-router-v6-pre/ .您似乎也不需要前导“/”。

在页面底部编辑。

http://localhost:3000/Playerhttp://localhost:3000/*(或 * 以外的任何内容)都呈现空白屏幕。

这是工作正常的着陆页:

主页.tsx

/** @jsxImportSource @emotion/react */
import React from 'react';
import { css } from '@emotion/react';
import logo from '../assets/cyberpunk.png';

export const HomePage = () => (
  <div
    css={css`
      margin: 10px auto 20px auto;
      padding: 30px 20px;
      max-width: 1000px;
      display: flex;
      align-items: center;
      justify-content: space-between;
    `}
  >
    <div>
      <img
        src={logo}
        alt="Logo"
        css={css`
          width: 700px;
          margin-left: 130px;
        `}
      />
      <h2>Players</h2>
      <button>Select a toon</button>
    </div>
  </div>
);

这是播放器页面:

播放器页面.tsx

import React from 'react';

export const PlayerPage = () => <h2>"One toon"</h2>;

找不到页面:

NotFoundPage.tsx

import React from 'react';

export const NotFoundPage = () => <h2>"Page Not Found"</h2>;

最后,

应用.tsx

/** @jsxImportSource @emotion/react */
import React from 'react';
import { css } from '@emotion/react';
import { Header } from './header';
import { HomePage } from './Views/HomePage';
import { fontFamily, fontSize, gray2 } from './Styles';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import { PlayerPage } from './Views/PlayerPage';
import { PlayersPage } from './Views/PlayersPage';
import { PlayerCreatePage } from './Views/PlayerCreatePage';
import { NotFoundPage } from './Views/NotFoundPage';

function App() {
  return (
    <BrowserRouter>
      <div
        css={css`
          font-family: ${fontFamily};
          font-size: ${fontSize};
          color: ${gray2};
        `}
      >
        <Header />
        <Routes>
          <Route path="" element={<HomePage />} />
          <Route path="Players" element={<PlayersPage />} />
          <Route path="Player" element={<PlayerPage />} />
          <Route path="Create" element={<PlayerCreatePage />} />
          <Route path="*" element={<NotFoundPage />} />
        </Routes>
      </div>
    </BrowserRouter>
  );
}

export default App;

为什么不显示 NotFoundPage 和 PlayerPage 中的 h2 元素?就像我每次都导航到错误的路线一样。

我修复了它。我重新制作了其中一个页面,使其看起来像这样:

function PlayerCreatePage() {
  return (
    <div style={{ padding: 20 }}>
      <h2>About View</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adip.</p>
    </div>
  );
}

export default PlayerCreatePage;

而这个确实出现了。这是为什么?其他观点有什么问题?

最佳答案

我试图重现您的错误,但未能成功。起初,我认为你没有在函数内部编写 return() 可能是个问题,但后来我意识到你没有使用大括号导出,所以 return 不是必需的。无论如何,代码运行良好,您应该尝试在新环境中重新创建。和平!

关于javascript - 使用 react-router-dom v6 路由到新页面时,React 组件不呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68853728/

相关文章:

reactjs - React-router-dom 未按预期工作

javascript - React Context Provider 不更新 Class.contextType

javascript - 下划线模板在调试器中不起作用

reactjs - 是的,如何验证 react 选择

javascript - React JS - 迭代外部 JSON 文件来填充表

javascript - 为什么ReactJS处理radio `checked` attr与其他attrs不同?

reactjs - 无法让 webpack require.ensure 分块方法与 react 路由器一起使用并生成单独的捆绑文件

javascript - 对于 Web Audio 节点,.connect() 是做什么的?

javascript - 了解 jQuery 中更改事件中 'this' 的范围

javascript - Bash 字符串替换函数类似于 Javascript String.prototype.replace()