【发布时间】:2020-01-30 22:44:59
【问题描述】:
谁能用通俗的话向我解释一下 FormControl 的功能是什么,为什么/如何使用它?
我在 React 中使用 Material-UI,我看到的许多表单示例都使用了 FormControl,但我很难理解它的作用,以及它是否对我的项目有必要。
现在我只有一个名为 Form.js 的组件,我将所有表单元素包含在一个 div 中,如下所示:
return (
<div>
<FormControl className={classes.formControl}>
<InputLabel htmlFor="select-multiple-accounts">Account</InputLabel>
<Select
multiple
value={accountName}
onChange={handleAccountChange}
input={<Input id="select-multiple-accounts" />}
renderValue={
selected => (
<div className={classes.chips}>
{
selected.map(value => (
<Chip key={value} label={value} className={classes.chip} />
))}
</div>
)}
MenuProps={MenuProps}
>
{accountNames.map(name => (
<MenuItem key={name.label} value={name.label} style={getStyles(name.label, accountName, theme)}>
{name.label}
</MenuItem>
))}
</Select>
</FormControl>
<br /><br />
<TextField
id="job-number"
label="Job #"
className={classes.textField}
value={props.jobNumber}
onChange={handleJobNumberChange}
fullWidth
/>
<br /><br /><br />
<TextField
id="project-description"
label="Project Description"
placeholder="Provide a detailed description of the project:"
className={classes.textField}
multiline
variant="outlined"
value={props.projectDescription}
onChange={handleProjectDescriptionChange}
fullWidth
/>
</div>
);
}
这样好吗?还是我应该将所有内容都包装在 FormControl 中?如果是这样..你能解释一下为什么吗?我不确定将表单编码到 React Web 应用程序时的最佳实践是什么。我是 React Forms 的新手。
谢谢。
【问题讨论】:
-
@RyanCogswell 这根本不相关。您可以在没有 FormControl 的情况下同时使用 Input 和 TextField
-
与 Angular Material 相比,我发现 MUI 的文档非常糟糕。一个简单的解释和示例将避免如此多的混乱。我知道 MUI 开发人员没有 Google 那么多的资源,但是来吧,这些都是基础知识。
-
@Phil 我链接到的答案与
FormControl是TextField呈现的较低级别组件之一有关,因此您不需要明确使用FormControl如果您使用的是TextField。
标签: javascript reactjs forms material-ui single-page-application