3 javascript typescript reactjs material-ui react-component
我正在尝试创建一个自定义 React Material ui 警报组件,只需传入文本和严重性作为参数即可在不同页面上调用该组件。我正在尝试使用这个:
export default function CustomAlert(severity: string, text: string){
<Alert style={{width:'50%'}} severity={severity}> {text}</Alert>
}
Run Code Online (Sandbox Code Playgroud)
但我在第一个严重性词上不断收到错误severity={severity}:
Type 'string' is not assignable to type '"error" | "success" | "info" | "warning" | undefined'.ts(2322)
Alert.d.ts(25, 3): The expected type comes from property 'severity' which is declared here on type 'IntrinsicAttributes & AlertProps'
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?或者有其他方法来定制这个组件吗?
编辑:我仍然无法在我的其他页面中使用它:
function StatusMessage(){
if (isRemoved){
return (
<Alert style={{width:'25%'}} severity="success"> User Removed</Alert>
)
}
else{
if(errorMessage!=''){
if (errorMessage.includes(`Couldn't find user`)){
return (
<div>
{/* <Alert style={{width:'25%'}} severity="error"> Couldn't Find User</Alert> */}
<CustomAlert></CustomAlert>
</div>
)
}
}}
}
Run Code Online (Sandbox Code Playgroud)
我在 CustomAlert 上收到错误:
JSX element type 'void' is not a constructor function for JSX elements.ts(2605)
Type '{}' is not assignable to type '(IntrinsicAttributes & "success") | (IntrinsicAttributes & "info") | (IntrinsicAttributes & "warning") | (IntrinsicAttributes & "error")'.
Type '{}' is not assignable to type '"error"'.ts(2322)
Run Code Online (Sandbox Code Playgroud)
只能Alert接受有限数量的字符串或未定义的字符串,因此您必须明确您的传递字符串属于这种类型。
type Severity = "error" | "success" | "info" | "warning" | undefined;
export default function CustomAlert(severity: Severity, text = "Sorry"){
<Alert style={{width:'50%'}} severity={severity}> {text}</Alert>
}
Run Code Online (Sandbox Code Playgroud)
现在,TS 编译器知道这severity将是联合类型之一Severity,并且不应该抛出错误。
| 归档时间: |
|
| 查看次数: |
2256 次 |
| 最近记录: |