首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MUI Nav Tabs不适用于反应性路由器。

问MUI Nav Tabs不适用于反应性路由器。
EN

Stack Overflow用户
提问于 2021-10-31 02:37:40
回答 1查看 2.5K关注 0票数 4

以下是四个组成部分:

App.js:

代码语言:javascript
复制
import React from 'react';
import { Route, Switch } from 'react-router-dom';
import About from './About';
import Home from './Home';

const App = () => {
  return <Switch>
    <Route path="/about">
      <About />
    </Route>
    <Route path="/">
      <Home />
    </Route>
  </Switch>
}

export default App;

Nav.js:

代码语言:javascript
复制
import * as React from 'react';
import {Box,Tabs,Tab} from '@material-ui/core';

function LinkTab(props) {
  return (
    <Tab
      component="a"
      onClick={(event) => {
        event.preventDefault();
      }}
      {...props}
    />
  );
}

export default function NavTabs() {
  const [value, setValue] = React.useState(0);

  const handleChange = (event, newValue) => {
    setValue(newValue);
  };

  return (
    <Box sx={{ width: '100%' }}>
      <Tabs value={value} onChange={handleChange} aria-label="nav tabs example">
        <LinkTab label="Home" href="/" />
        <LinkTab label="About" href="/about" />
      </Tabs>
    </Box>
  );
}

About.js:

代码语言:javascript
复制
import React from 'react'
import NavTabs from './Nav'

export default function About() {
    return (
        <div>
            <NavTabs/>
            About
        </div>
    )
}

Home.js:

代码语言:javascript
复制
import React from 'react'
import NavTabs from './Nav'

export default function Home() {
    return (
        <div>
            <NavTabs/>
            Home
        </div>
    )
}

在Nav.js中,当我想切换选项卡时,它不会切换到另一个选项卡。此外,URL链接不更新。它始终是第一个环节。

在这里,当我切换选项卡时,它还会更改两个组件和地址URL。我怎么能这么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-31 03:02:58

来自href元素的a属性使整个页面刷新,这就违背了react路由器的目的。在react-路由器中,您应该使用Link组件并提供to支持来告诉react路由器导航到另一条路由,而不更改应用程序状态:

代码语言:javascript
复制
// <a href='/about' {...} />
<Link to='/about' {...} />

您可以通过将Tab的根组件替换为Link而不是a来修复它,并将href更改为to支柱:

代码语言:javascript
复制
// <Tab component='a' label="Home" href="/" />
<Tab component={Link} label="Home" to="/" />

​

​

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

https://stackoverflow.com/questions/69783569

复制
相关文章

相似问题

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