我有两个react项目父项目和公共项目(包含公共组件,如页眉、页脚)
我在父级中定义了素材主题,并使用MuithemeProvider
以标准方式配置了素材主题。
但是,此主题对象在父级中定义的组件中可用,但在共享项目公共中不可用。
欢迎提出建议。
2020年10月30日更多详情添加如下
父组件
import React from "react";
import "./App.css";
import { BrowserRouter, Switch, Route } from "react-router-dom";
import themeDefault from "./CustomTheme.js";
import { MuiThemeProvider } from "@material-ui/core/styles";
import { createMuiTheme } from "@material-ui/core/styles";
import Dashboard from "./containers/Dashboard/Dashboard";
import { Footer, Header } from "my-common-react-project";
function App() {
const routes = () => {
return (
<BrowserRouter>
<Switch>
<Route exact path="/" component={Dashboard} />
</Switch>
</BrowserRouter>
);
};
return (
<MuiThemeProvider theme={createMuiTheme(themeDefault)}>
<div className="App">
<Header
logo="some-logo"
userEmail={"test@email"}
/>
... app components here..
<Footer />
</div>
</MuiThemeProvider>
);
}
export default App;
共享组件
import React from "react";
import {
Box,
AppBar,
Toolbar,
Typography,
} from "@material-ui/core/";
import styles from "./Header.styles";
import PropTypes from "prop-types";
const Header = (props) => {
const classes = styles();
const { options, history } = props;
const [anchorEl, setAnchorEl] = React.useState(null);
const handleCloseMenu = () => {
setAnchorEl(null);
};
const goto = (url) => {
history.push(url);
};
return (
<Box component="nav" className={classes.headerBox}>
<AppBar position="static" className={classes.headerPart}>
<Toolbar className={classes.toolBar}>
{localStorage && localStorage.getItem("isLoggedIn") && (
<>
{options &&
options.map((option) => (
<Typography
key={option.url}
variant="subtitle1"
className={classes.headerLinks}
onClick={() => goto(option.url)}
>
{option.name}
</Typography>
))}
</>
)}
</Toolbar>
</AppBar>
</Box>
);
};
Header.propTypes = {
options: PropTypes.array
};
export default Header;
共享组件样式
import { makeStyles } from "@material-ui/core/styles";
export default makeStyles((theme) => ({
headerPart: {
background: "white",
boxShadow: "0px 4px 15px #00000029",
opacity: 1,
background: `8px solid ${theme.palette.primary.main}`
borderTop: `8px solid ${theme.palette.primary.main}`
}
}));
父组件将theme.Palette.Primary.Main
定义为红色,我希望在Header中应用同样的颜色,但它正在选择一个不同的主题(默认)对象,该对象具有theme.Palette.Primary.Main
蓝色。
这导致我的头是蓝色的,但正文是读的颜色。
任何关于如何配置此主题对象的建议,以便header也从父主题对象中选择theme.Palette.Primary.Main
。
您可以使用useTheme
或withTheme
将主题对象注入到ThemeProvider
内部的任何嵌套组件。
useTheme
钩子withtheme
HOCfunction DeepChild() {
const theme = useTheme<MyTheme>();
return <span>{`spacing ${theme.spacing}`}</span>;
}
class DeepChildClass extends React.Component {
render() {
const { theme } = this.props;
return <span>{`spacing ${theme.spacing}`}</span>;
}
}
const ThemedDeepChildClass = withTheme(DeepChildClass);
问题内容: 我有一个带有.groovy脚本的共享库,可以在jenkinsfile中这样调用: 我要执行的共享库中也有一个.ps1文件。但是,如果当我从jenkinsfile调用共享库函数时从共享库函数中执行该操作,则当前工作目录就是jenkinsfile所在管道的jenkins工作目录(通常是您想要的)。 有没有办法访问共享库中的文件?我想要做 问题答案: 您只能使用内置步骤获得内容。这就是为什么
我有一个网站,在本地主机上运行良好。 在我上传到我的godaddy主机后,我的网站出现了一个bug。结论是,我必须更改php上的内存限制。ini文件,但找不到php。FTP管理器上的ini。 我曾尝试: 找到更改到分类FTP管理器的方法。 创建/上传php.ini文件从本地和不工作。 我的问题是:我如何解决这个问题?我必须换php。ini文件。有人有像我这样的经验吗?
我最近离开了主题。AppCompat到主题。MaterialComponents,但我不懂如何组织颜色。 例如,为什么按钮采用橙色背景颜色,但cardview的背景不采用橙色? 有人能给我解释一下关于这些变量的更多信息吗 有任何官方文件吗?
我有一个react组件,它加载在路由上 我需要从components构造函数中的url访问一个参数 我该怎么做呢? 我可以这样访问它吗:
我使用hostinger,在我的父托管目录中有两个文件夹 my-laravel-app-文件夹 public_html 公开/索引。我变了
问题内容: 我正在开发使用Meteor和React作为视图引擎的应用程序 考虑下图: 从另一个示例反应隐藏组件 当触发C4按钮单击事件时,我需要更改C2组件状态。由于他们没有直接关系,因此我无法直接从C4进入C2状态。 另一个示例是从Component提交表单并获取在另一个Component中声明的数据(输入字段的值)。 我知道可以通过一些技巧来解决此问题(例如,流星会话,通过每个组件传递数据,基