javascript - 如何更改材质 UI 警报组件的类型?
问题描述
我对 Typescript 比较陌生,我使用 React Context 创建了一个快餐栏组件,当我尝试设置警报严重性时,我收到此错误“类型‘字符串’不可分配给类型‘颜色|未定义’。” 我确实将类型设置为字符串,但是,我似乎无法弄清楚如何给它一种颜色类型。这是我的警报组件:
const AppAlert = () => {
const alertContext = useContext(AlertContext);
return (
<div>
<Snackbar open={alertContext.snackbarOpen}>
<Alert severity={alertContext.snackbarType} variant="filled">
{alertContext.snackbarMessage}
</Alert>
</Snackbar>
</div>
);
};
export default AppAlert;
这是我的警报道具类型:
interface AlertProps {
snackbarOpen: boolean;
snackbarType: string;
snackbarMessage: string;
setAlert: (type: string, message: string) => void;
}
我希望我足够具体,因为我仍在努力理解 TS。
解决方案
'error' | 'info' | 'success' | 'warning'
根据文档material-ui.com/api/alert,Material-ui警报的严重性可以是四种类型之一。您遇到的问题是因为您的Alert
组件的严重性属性undefined
已从您的alertContext.snackbarType
. 为避免出现问题时出现错误,最好设置默认严重性类型,如下所示:
<Alert severity={alertContext?.snackbarType || 'warning'} variant="filled">
{alertContext?.snackbarMessage}
</Alert>
推荐阅读
- azure - Windows Defender - Windows Server 2019 客户端载入 - 通过 squid 代理服务器
- bash - 使用文件夹提取文件,然后使用 bash 完成
- sql - 在日期范围内有效地连接 R(或 SQL 表)中的两个 data.tables?
- javascript - 递归树没有给出正确的输出
- ethereum - 使用 truffle 迁移时如何禁用 750 秒超时?
- node.js - 为什么 Angular HTTP Post 方法错误:无法读取未定义的属性“post”?
- c# - 如何检测非托管本机调试器是否正在运行当前的 .NET 应用程序?
- android-pay - EMV 标签 5F25 申请生效日期 == 49.12.31
- python - 如何在 kv 中定位 canvas.before
- mysql - sequelize mysql中的嵌套查询以获取赞成票和反对票数