首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何添加具有相同动态路由的3条路由(React,useParams)

如何添加具有相同动态路由的3条路由(React,useParams)
EN

Stack Overflow用户
提问于 2021-02-14 23:53:17
回答 1查看 146关注 0票数 1

我需要帮助解决这个路由问题在我的创建-反应-应用程序。我有三个组件共享相同的路由('/games/:gameId/task/:taskNumber/page/:pageNumber).

对于路由,交换机路由可以工作,但它之前的条件不能工作。没有错误。我想知道怎么修好它。

TaskPage.js

代码语言:javascript
复制
 const TaskPage = () => {
  const { gameId, taskNumber, pageNumber } = useParams();

  if (taskNumber === "5" && pageNumber === "3") {
    return (
      <EndGame
        gameId={gameId}
        taskNumber={taskNumber}
        pageNumber={pageNumber}
      />
    );
  }
  switch (pageNumber) {
    case "0":
      return (
        <StartGame
          gameId={gameId}
          taskNumber={taskNumber}
          pageNumber={pageNumber}
        />
      );
    case "1":
      return (
        <StartTask
          gameId={gameId}
          taskNumber={taskNumber}
          pageNumber={pageNumber}
        />
      );

    case "2":
      return (
        <DuringTask
          gameId={gameId}
          taskNumber={taskNumber}
          pageNumber={pageNumber}
        />
      );

    case "3":
      return (
        <EndTask
          gameId={gameId}
          taskNumber={taskNumber}
          pageNumber={pageNumber}
        />
      );

    default:
      return null;
  }
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-15 07:28:29

在尝试有条件地呈现UI时,JSX并不完全是这样;if语句在JSX中无效。我的建议是有条件地通过一个pageNumber语句返回switch值所需的页面组件。

代码语言:javascript
复制
const TaskPage = () => {
  const { gameId, taskNumber, pageNumber } = useParams();

  switch (pageNumber) {
    case "1":
      return (
        <Tasks
          gameId={gameId}
          taskNumber={taskNumber}
          pageNumber={pageNumber}
        />
      );

    case "2":
      return (
        <StartGame
          gameId={gameId}
          taskNumber={taskNumber}
          pageNumber={pageNumber}
        />
      );

    case "3":
      return (
        <EndGame
          gameId={gameId}
          taskNumber={taskNumber}
          pageNumber={pageNumber}
        />
      );

    default:
      return null;
  }
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66201300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档