【发布时间】:2020-06-09 03:59:40
【问题描述】:
最近 React Admin 输入组件开始在下方添加额外的空间以显示 helperText(如果提供)。但似乎不可能通过添加helperText={false} 来避免这种行为,因为它是推荐的,例如:
<TextInput source="myField" helperText={false} />
无论我是否将“false”作为值传递给heplerText 属性,它总是显示一些额外的空间。
我现在使用的是 React Admin 版本 3.2.3。
在 RA 的 TextInput 组件中我们可以看到这段代码:
helperText={ // <-- goes to MUI TextField
<InputHelperText
touched={touched}
error={error}
helperText={helperText} // <-- goes to RA InputHelperText
/>
}
如果InputHelperText 组件的helperText prop 的值等于false,则InputHelperText 不渲染任何内容(在其渲染函数中返回null)。
但是传递给底层 MaterialUI TextField 的 heplerText 属性的值永远不会为 null 或未定义,即使我通过“false”:它始终是一个 InputHelperText 组件,它可能会或可能不会渲染某些东西。
MaterialUI TextField 组件依次分析其heplerText prop:
const helperTextId = helperText && id ? `${id}-helper-text` : undefined; // <-- helperText from TextInput
...
{helperText && (
<FormHelperText id={helperTextId} {...FormHelperTextProps}>
{helperText}
</FormHelperText>
)}
由于helperText 永远不会为空或未定义,因此它将始终呈现FormHelperText,可能带有一个空的helperText。
如果我像这样更改 RA TextInput 组件的代码:
helperText={helperText && touched && error ?
<InputHelperText
touched={touched}
error={error}
helperText={helperText}
/> : null
一切正常:当TextInput 组件的helperText 属性的值等于 false 时,helperText 的值(传递给底层 MUI TextField)确实为空,因此没有添加额外的空间。
是我遗漏了什么还是确实是一个错误?
【问题讨论】: