reactjs - 传递道具不起作用 Material UI 做出反应
问题描述
我试图通过一个道具来修改按钮样式。在这种情况下,我希望按钮为“蓝色”,背景颜色为“橙色”。
我在调用Button的时候传入了一个cool="true",但是按钮还是"yellow"中的"red",好像cool状态为false..
import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import Button from "@material-ui/core/Button";
/* This is an example of passing props */
const useStyles = makeStyles({
buttonStyle: (props) => {
return {
color: props.cool ? "blue" : "red",
backgroundColor: props.cool ? "orange" : "yellow",
};
},
});
function App(props) {
const classes = useStyles(props);
console.log(classes);
return (
<>
<Button cool="true" className={classes.buttonStyle}>
Click me!
</Button>
</>
);
}
export default App;
感谢您的回答。下面解决问题。我想知道是否可以在 <Button ..> 中包含“cool”修饰符以便更容易阅读,因为 return () 除了按钮之外还有很多部分。
function App() {
const classes = useStyles({ cool: true });
console.log(classes);
return (
<>
<h1 className={classes.textStyle}>Let's roll this app out.</h1>
<Button className={classes.buttonStyle}>Click me!</Button>
</>
);
}
解决方案
如果您想使用组件道具更新按钮的样式,则创建一个单独的组件,根据道具更改按钮样式。
酷按钮.jsx
import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import Button from "@material-ui/core/Button";
/* This is an example of passing props */
const useStyles = makeStyles({
buttonStyle: (props) => {
return {
color: props.cool ? "blue" : "red",
backgroundColor: props.cool ? "orange" : "yellow"
};
}
});
function CoolButton({ cool }) {
const classes = useStyles({ cool });
return (
<>
<Button className={classes.buttonStyle}>Click me!</Button>
</>
);
}
export default CoolButton;
应用程序.js
import CoolButton from "./CoolButton";
function App(props) {
return (
<>
<CoolButton cool="true">Click me!</CoolButton>
</>
);
}
export default App;
https://codesandbox.io/s/cool-button-8its7
如果您需要进一步的支持,请告诉我。
推荐阅读
- java - 从 Java Web 应用程序连接到 WebLogic 的 JNDI 数据源
- facebook - 如何将 Facebook 照片链接到另一个网站?
- javascript - 防止 Ant modal 阻塞后台访问
- java - 如何避免分布式系统中的数据库 ID 冲突
- javascript - 我正在制作一个 Discord 机器人,但遇到了意外的令牌错误
- java - 为什么这个“for”循环不从数组列表中删除值?
- python - 如何比较 django 2.1 中的 2 个字段?
- reactjs - 在 Reactjs 上使用表单发布
- android - 自定义安卓手机的横向屏幕
- r - 如何绘制具有正常数和 x 变量相等的函数?