当前位置: 首页 > 知识库问答 >
问题:

如何在react js web应用程序的页面导航上更改材质UI工具栏中的标题?

洪华皓
2023-03-14

我有一个功能组件MainToolBar。在导航到其他页面(功能组件)时,我需要更改主工具栏的标题。我怎么能这么做?使用上下文API或Redux或任何其他简单的东西

下面是Main ToolBar的代码。js

 export default function MainToolBar() {
 const classes = useStyles();
      return (
        <div className={classes.root}>
          <AppBar position="static">
    <Toolbar>
    <Typography align="center" variant="h6" className ={classes.title}>
                ERP System
              </Typography>
              <Button color="inherit">Login</Button>
            </Toolbar>
          </AppBar>
        </div>
      );
    }

下面是Thirdparty.js的代码

       function ThirdParty() 
           {
         return (
            <div>
         <label>ThirdParty</label>            
            </div>
        )
    }
       export default ThirdParty
       layout.js
       import {
      BrowserRouter as ReactRouter,
      Switch as ReactSwitch,
      Route as ReactRoute,
    } from "react-router-dom";
    
 import ThirdParty from "./ThirdParty.js";
    
    export default function Layout() {
      return (
        <div>
          <ReactRouter>
            <MainToolBar />
              <ReactSwitch>
              <ReactRoute exact path="/" component={SignInUp}> 
              </ReactRoute>         
              <ReactRoute exact path="/thirdparty" component= 
              {ThirdParty}></ReactRoute>
            </ReactSwitch>
          </ReactRouter>
        </div>
      );
    }

共有1个答案

冯枫
2023-03-14

上下文API和redux都是很好的解决方案。这样,您可以编写一个简单的效果钩子来更新工具栏标题上下文/调度redux操作来更改它。这个钩子将在由Road组件呈现的主组件中被调用。

另一种解决方案(但可能不太一致)是基于路径为可选工具栏标题创建映射对象。这样,您可以使用react router domuseLocationhook标识路径,并更改标题。例如

import React, { useEffect, useState } from "react";
import { useLocation } from "react-router-dom";

const titles = {
  "/": "ERP System",
  "/thirdparty": "Third Party"
};

...
// Inside Toolbar component
const location = useLocation();
const [title, setTitle] = useState(titles["/"]);

useEffect(() => {
  setTitle(titles[location.pathname]);
}, [location.pathname]);

...

如果有依赖于ID值的路径,则效果内部需要更复杂的逻辑

 类似资料:
  • 我的android应用程序有一个工具栏,我想改变它的标题。我使用了toolbar.settitle(),但它不起作用...请帮忙。我该怎么办?我尝试了getSupportActionBar().setTitle(),但它不起作用。

  • 我想从材质UI更改(减少)工具栏的默认高度 我已经提到了如何更改材质UI工具栏高度?但我仍然面临着这个问题 问题是,当我超过50岁时,我能看到变化。但当我想降低高度时,我无法做到。 我如何才能实现这一点? 我的代码:

  • 我想显示现在说唱文字,比如...我怎么能改变它通过使用材料UI 它像那样显示“身体1”。Lorem ipsum dolor坐在这里,奉献给我们。克罗斯·布兰迪特..." 但我想表现得像“身体1.洛雷姆·伊普苏姆·多洛·希特·阿梅特,奉献给精英们。库斯·布兰迪。。。더보기" 你能帮我吗?

  • 我在活动中有以下代码: 我正在从中的不同片段更新ActionBar标题,如下所示:

  • 问题内容: 我正在尝试从Material-UI 更改组件的边框。到目前为止,我已经尝试过: 我可以自定义等,但是许多小时后,我仍然无法自定义Select。我尝试也传递一个,但是您必须自定义,这甚至更糟。 有人可以帮我这个沙盒吗? https://codesandbox.io/s/material-demo- ecj1k 我真的很感激。 问题答案: 以下是为默认,悬停和聚焦状态覆盖边框(),标签()

  • 问题内容: 如何在除登录页面之外的所有页面上显示导航栏,从而不必在每个需要的页面上附加导航栏文件?现在,我在主应用程序布局上包含了导航栏,应如何处理使其保持干燥? 演示(每页上带有导航栏): 问题答案: 创建像这样的命名视图,并按状态按视图设置templateUrl。对于状态,只需不为视图提供templateUrl ,它就不会呈现导航栏。 更新 :隐藏在非状态。