我在我的 Formik 表单中使用 useFormik 钩子,这意味着,根据 docs,我不能使用<Field>, <FastField>, <ErrorMessage>, connect(), and <FieldArray>
.
所以我一直从专门使用 MaterialUI TextField的formik 示例构建。它运行良好,但我无法弄清楚如何禁用/更改某些触摸行为以使 UI 更好。
我的目标是在触摸 TextField之前显示 TextInput 标签。
这就是我的意思。我当前用于名称输入的 TextField 代码如下所示...
<TextField
fullWidth
id="name"
name="name"
label="Name"
type="name"
value={formik.values.name}
onChange={formik.handleChange}
error={formik.touched.name && Boolean(formik.errors.name)}
helperText={formik.touched.name && formik.errors.name}
/>
...但是像这样渲染(在被触摸之前)。请注意,它没有明确的标签。
只有当字段被触摸时,标签才会呈现给用户(如下所示)。因此,用户开始查看一堆空字段,然后他们必须触摸它们以查看要输入的内容。
在同一文档源中引用的 formik 文本字段材料 ui 示例沙箱中未观察到此行为。
更进一步,当我将来自 Material UI 的 TextField 文档的示例代码放入我的 formik 表单时,最初也没有其他 TextField 变体上的标签。
这段代码
<TextField id="standard-basic" label="Standard" />
<TextField id="filled-basic" label="Filled" variant="filled" />
<TextField id="outlined-basic" label="Outlined" variant="outlined" />
在 Material UI 演示中看起来像这样
以我的 formik 形式运行时看起来像这样。
现在我将使用“填充”变体选项,因为它是唯一一个运行良好的选项,但我想知道这里的裂缝是什么。
我喜欢 TextField 与 yup 一起显示错误的方式,以及它如何在下拉列表中提供建议,所以我想保留它。但是我需要以清晰的方式显示标签,而不仅仅是写一个 div NAME div 或类似的东西。
谢谢