首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >反应路由器多<Switch>

反应路由器多<Switch>
EN

Stack Overflow用户
提问于 2019-05-09 00:45:58
回答 1查看 4.5K关注 0票数 2

我用的是"react-router-dom": "^4.3.1","@material-ui/core": "^3.9.2",

我得到了router.ts,它有路由、交换机和MainPage组件。

router.ts

代码语言:javascript
运行
AI代码解释
复制
      <HashRouter>
        <div id="App">
          <Appbar />
          <Switch>
            <Route exact path="/" component={MainPage} />
            <Route exact path="/signup" component={SignupPage} />
            <Route exact path="/signup/success" component={SignupSuccessPage} />
            <Route exact path="/room/:id" component={NovelPage} />
            <Route component={NotfoundPage} />
          </Switch>
        </div>
      </HashRouter>

我得到了MainPage组件,它有路由和交换机

代码语言:javascript
运行
AI代码解释
复制
          <AppBar position="static">
            <Tabs
              variant="fullWidth"
              value={this.state.value}
              indicatorColor="primary"
              textColor="primary"
            >
                  <Tab
                    label={"latest_novel"}
                    onChange={this.handleTabsChange(`/latest/novel`, 0)}
                  />
                  <Tab
                    label={"create novel"}
                    onChange={this.handleTabsChange(`/create/room`, 1)}
                  />
            </Tabs>
            <Switch>
              <Route exact path={`${this.props.match.url}/latest/novel`} component={TodayNovelPage} />
              <Route exact path={`${this.props.match.url}/create/room`} component={CreateRoomPage} />
            </Switch>
          </AppBar>

我本以为

  1. 然后,当我单击主页的Tab组件时,页面url会更改为“localhost:3000/最新/新颖”,页面会被移动。
  2. 当页面被移动时,它会显示在主页的开关下面

但是当我尝试的时候。

页面被移动,但是Tabs消失了,它似乎显示在router.ts而不是主页下面。为什么会这样呢?

如果你需要更多的信息,请告诉我。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-05-09 22:03:40

对于这两个选项卡,您应该有共同的父路由。请检查下面的例子,我已经创建了。

https://codesandbox.io/s/zz2xnn9p7m

Index.js

代码语言:javascript
运行
AI代码解释
复制
import React from "react";
import ReactDOM from "react-dom";
import { Switch, Route, Redirect, BrowserRouter } from "react-router-dom";

import AppBar from "@material-ui/core/AppBar";
import Toolbar from "@material-ui/core/Toolbar";
import Typography from "@material-ui/core/Typography";

import MainPage from "../src/mainPage";

import "./styles.css";

function App() {
return (
  <div className="App">
    <AppBar position="static">
      <Toolbar>
        <Typography variant="h6" color="inherit">
          Relay Novel
        </Typography>
      </Toolbar>
    </AppBar>
    <BrowserRouter>
     <Switch>
        <Route exact path="/" render={() => <Redirect to="/mainPage" />} />
        <Route path="/mainPage" component={MainPage} />
     </Switch>
    </BrowserRouter>
  </div>
  );
 }
 const rootElement = document.getElementById("root");
 ReactDOM.render(<App />, rootElement);

MainPage.js

代码语言:javascript
运行
AI代码解释
复制
import React, { Fragment } from "react";
  import ReactDOM from "react-dom";
  import { Switch, Route, Redirect, Link } from "react-router-dom";

  import Tabs from "@material-ui/core/Tabs";
  import Tab from "@material-ui/core/Tab";

  class MainPage extends React.Component {
    constructor(props) {
      super(props);
      this.state = {
        value: 0
      };
    }

    handleChange = (event, value) => {
      this.setState({ value });
    };
    render() {
      const { value } = this.state;
      return (
        <Fragment>
          <Tabs value={value} onChange={this.handleChange}>
            <Tab label="Latest Novel" component={Link} to="/mainPage/tab1" />
            <Tab label="Create Novel" component={Link} to="/mainPage/tab2" />
          </Tabs>
          <Switch>
            <Route exact path="/mainPage" />
            <Route path="/mainPage/tab2" render={() => <div>Latest Novel</div>} />
            <Route path="/mainPage/tab1" render={() => <div>Create Novel</div>} />
          </Switch>
        </Fragment>
      );
    }
  }
  export default MainPage;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56055563

复制
相关文章
面向对象中的内部类
在描述事物时,若一个事物内部还包含其他事物,就可以使用内部类这种结构。比如,电脑Computer类中包含鼠标 Mouse类 ,这时, Computer 就可以使用内部类来描述,定义在成员位置。 如:
星哥玩云
2022/09/08
1K0
面向对象中的内部类
java内部类和静态内部类区别_静态内部类对象的创建
在阅读Java Collection Framwork时,LinkedList中有个静态内部类:
全栈程序员站长
2022/11/10
7050
Seurat对象内部结构
上期推文我们根据单细胞初探(seurat基础流程)(2021公开课配套笔记)学习并搭建了基本的单细胞转录组下游分析流程,其中很重要的一个知识点就是Seurat对象,熟悉Seurat对象内部结构对我们掌握各个分析究竟是在进行什么样的处理很有帮助。
生信技能树jimmy
2023/08/31
2K0
Seurat对象内部结构
Java对象内部结构
存储本类对象的实例成员变量和所有可见的父类成员变量。如Interger的实例成员只有一个private int value ,占用4个字节,所以加上对象头为16个字节, 需要注意计算子类占用时,需要加上父类的所有字段
颍川
2021/12/06
5010
Java对象内部结构
10.2 Git 内部原理 - Git 对象
Git 是一个内容寻址文件系统。 看起来很酷, 但这是什么意思呢? 这意味着,Git 的核心部分是一个简单的键值对数据库(key-value data store)。 你可以向该数据库插入任意类型的内容,它会返回一个键值,通过该键值可以在任意时刻再次检索(retrieve)该内容。 可以通过底层命令 hash-object 来演示上述效果——该命令可将任意数据保存于 .git 目录,并返回相应的键值。 首先,我们需要初始化一个新的 Git 版本库,并确认 objects 目录为空:
shaonbean
2019/05/26
7760
Python基础之:Python中的内部对象
Python中内置了很多非常有用的对象,本文将会介绍Python中的内置函数,内置常量,内置类型和内置异常。
程序那些事
2021/04/22
8320
Python基础之:Python中的内部对象
Python中内置了很多非常有用的对象,本文将会介绍Python中的内置函数,内置常量,内置类型和内置异常。
程序那些事
2021/04/06
1.5K0
java_内部类、匿名内部类的使用
创建内部类对象格式: 外部类名.内部类名 对象名 = new 外部类型().new 内部类型();
咕咕星
2020/08/19
6930
面向对象—深度剖析内部类
这里我们深度介绍一下内部类,成员内部类和匿名内部类并给出匿名内部类的一个编程常用方法
秋落雨微凉
2022/10/25
2430
Java Review (十五、面向对象----内部类)
大部分时候,类被定义成一个独立的程序单元。在某些情况下,也会把一个类放在另一个类的内部定义,这个定义在其他类内部的类就被称为内部类(有的地方也叫嵌套类),包含内部类的类也被称为外部类(有的地方也叫宿主类)。Java从JDK 1.1开始引入内部类,内部类主要有如下作用。
三分恶
2020/07/16
3620
Git 内部原理之 Git 对象哈希
在上一篇文章中,将了数据对象、树对象和提交对象三种Git对象,每种对象会计算出一个hash值。那么,Git是如何计算出Git对象的hash值?本文的内容就是来解答这个问题。
用户1257393
2018/07/30
1.3K0
Python中面向对象比较简单的内部函数
# 比较简单的内部函数 # 代码部分 class Cat: def __init__(self, new_name): self.name = new_name # 定义一个私有属性 self.__age = 18 print("{}来了".format(self.name)) def __del__(self): print("%s 我去了" % self.name) def __str__(se
benym
2022/07/14
9450
使用javadoc内部的文档注解
代码示例地址:https://github.com/JoeyBling/bootplus 1、@see 注解@see可以在注释中实现链接跳转.@see可以指向包,类,方法,属性. 一个完整的使用方法是这样的@see package.class#member 如果指向的在当前类中,可以只写#号后面的. @see #field @see #method(Type, Type,...) @see #method(Type argname, Type argname,...) @see #construct
試毅-思伟
2020/02/18
7180
Angular 从入坑到挖坑 - 表单控件概览
angular 入坑记录的笔记第三篇,介绍 angular 中表单控件的相关概念,了解如何在 angular 中创建一个表单,以及如何针对表单控件进行数据校验。
程序员宇说
2020/03/19
19.5K0
【深入理解JVM】Java对象创建过程和对象内部结构
  存储所定义的各种类型字段内容,无论是从父类继承下来,还是在子类中定义的,都需要记录起来。
程序员云帆哥
2022/05/12
2330
【深入理解JVM】Java对象创建过程和对象内部结构
关于防止改变对象内部不可变状态的小例子
Java相对于c而言,是一门比较安全的语言,免去了指针操作带来的各种不安全因素,但是当你构建一个类,给别人提供接口,在交互的过程也会带来不少麻烦,有时候甚至会改变对象内部的不可变状态,请看下面例子。 public class Tryst { private final Date date; public Tryst(Date date){ this.date = date; } public Date getDate() { return date; } }
java达人
2018/01/31
9090
贯穿jQuery的内部栈(一) -- 使用
非常感谢大家的理解和支持,就在今天,本公众号收到了微信官方的邀请 -- 声明原创功能,这无疑是给我带来一付强心剂。现在大家就可以在公众号下方留言了。
用户7293182
2022/01/06
6680
贯穿jQuery的内部栈(一)  --  使用
【JavaSE专栏65】内部类的使用,定义在其他类内部的类
InnerClass 可以直接访问外部类 OuterClass 的成员变量 outerVariable,并且 OuterClass 可以通过创建 InnerClass 的实例来调用 innerMethod() 方法。
Designer 小郑
2023/08/09
4460
【JavaSE专栏65】内部类的使用,定义在其他类内部的类
点击加载更多

相似问题

集束图在海上的标签

410

样式海图和实际热图

11

海图Marimekko图刷新

11

如何为海上集束图提供轴线

17

编辑海图和计数图的图例标题

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