我对Typescript比较陌生,我已经使用React Context创建了一个snackbar组件,当我尝试设置警报严重性时,我收到以下错误“Type 'string' is not assignable to type 'Color|undefined'"。我确实将类型设置为字符串,但是,我似乎不知道如何将其类型设置为Color。下面是我的警报组件:
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;
以下是我的警报 prop 类型:
interface AlertProps {
snackbarOpen: boolean;
snackbarType: string;
snackbarMessage: string;
setAlert: (type: string, message: string) => void;
}
我希望我说得足够具体,因为我仍在努力理解TS。
3条答案
按热度按时间tyky79it1#
根据文档material-ui.com/api/alert,Material-ui预警的严重性可以是四种类型
'error' | 'info' | 'success' | 'warning'
之一。您遇到的问题是因为alertContext.snackbarType
为Alert
组件的严重性属性分配了一个undefined
值。为了避免出错时出错,最好按如下方式设置默认严重性类型:wgeznvg72#
我刚刚遇到了同样的问题,并通过从
@material-ui/lab/Alert
导入类型解决了它:zaq34kh63#
您可以使用React的
useState
并创建一个对象来存储严重性和消息。而Mui分量在下面。
它工作时没有任何问题,您可以随时修改严重性和消息。