我想屏蔽一个Material UI TextField,并在互联网上阅读一些解决方案,我得到了以下代码:
<InputMask
mask="(0)999 999 99 99"
value={phone}
disabled={false}
onChange={handleChange}
>
{(inputProps: Props & TextFieldProps) => (
<TextField
{...inputProps}
type="tel"
label={t("addDriverModal.phone")}
/>
)}
</InputMask>
但它让我犯了这个错误:
No overload matches this call.
Overload 1 of 2, '(props: Props | Readonly<Props>): ReactInputMask', gave the following error.
Type '(inputProps: Props & TextFieldProps) => JSX.Element' is not assignable to type 'ReactNode'.
Overload 2 of 2, '(props: Props, context: any): ReactInputMask', gave the following error.
Type '(inputProps: Props & TextFieldProps) => JSX.Element' is not assignable to type 'ReactNode'.ts(2769)
因此,我不能将TextField作为InputMask组件的子级传递。
我也尝试了这个解决方案:
<InputMask
mask="(0)999 999 99 99"
value={phone}
disabled={false}
onChange={handleChange}
>
<TextField
id="outlined-basic"
label="Teléfono"
variant="outlined"
style={{
border: "2px solid #fff",
borderRadius: "4px",
color: "white",
}}
InputLabelProps={{ style: { color: "white" } }}
sx={{ input: { color: "white" } }}
/>
</InputMask>
但当我启动应用程序时,在控制台显示此错误:
Uncaught Invariant Violation: react-input-mask: children must be a function
所以我真的不能使用任何解决方案来屏蔽我的MUI文本字段。我使用这个版本:
"react": "^18.1.0",
"react-dom": "^18.1.0",
"react-input-mask": "^2.0.4",
"@types/react": "^18.0.0",
"@types/react-dom": "^18.0.0",
"@types/react-input-mask": "^3.0.1",
我使用Typescript和函数组件。
7条答案
按热度按时间0g0grzrc1#
您正在使用的类型定义包与包的版本不对应。您应该:
@types/react-input-mask
降级为2.0.4
以匹配软件包react-input-mask
升级到3.0.0-alpha.2
版本以匹配键入。py49o6xq2#
我遇到了同样的问题,将
react-input-mask
升级到3.0.0-alpha.2
版本解决了这个问题。qcuzuvrc3#
对于
react
的v16,下面的react-input-mask
配置可以正常工作。升级react到v18后,您还需要升级
react-input-mask
的版本,这应该可以修复此错误。uplii1fm4#
我有同样的问题,它对我的工作更新
react-input-mask
到版本3.0.0-alpha.2
。最后是我的代码:
gfttwv5a5#
在gitHub上的示例中添加@ts-ignore相同的问题https://stackblitz.com/edit/react-ts-u5u2rb?file=TextFieldMask.tsx
myzjeezk6#
仔细检查你作为子元素传入的内容,我得到了这个错误,结果发现我只是引用了Formik上不存在的属性。
e7arh2l67#
@PetePearl在GitHub问题队列上提供了一个解决方案,使用
Omit
来替换children
的类型:然后使用
<InputMaskCorrect>
代替<InputMask>
。或者,您也可以升级到
react-input-mask@3.0.0-alpha.2
,但该软件包在过去3年中没有更新。YMMV,问题队列注解中的详细信息。