创建带有文本字段的 Material Ui 复选框
Posted
技术标签:
【中文标题】创建带有文本字段的 Material Ui 复选框【英文标题】:Create a Material Ui checkbox with textfiled 【发布时间】:2021-05-25 05:46:27 【问题描述】:如何创建一个 Material ui 复选框,选中该复选框将禁用 Textfield 并修复对齐方式?
沙盒链接:
https://codesandbox.io/s/material-demo-forked-mfnqk?file=/demo.tsx
【问题讨论】:
【参考方案1】:您应该使用List component provided by Material UI。给它 alignItems="center" 道具来修复对齐。然后,Material UI Checkboxes 组件接受 disabled 属性的布尔值,因此您应该在状态挂钩中将其设置为“checked”的值。这样,当 'checked' 更新时,禁用的道具也会更新。我还向 textField 添加了一个 fullWidth 道具,以使其不那么混乱。 A live demo can be found here,但我是这样解决的:
import React from "react";
import Checkbox from "@material-ui/core/Checkbox";
import TextField from "@material-ui/core/TextField";
import List from "@material-ui/core/List";
import ListItem from "@material-ui/core/ListItem";
import Typography from "@material-ui/core/Typography";
export default function Checkboxes()
const [checked, setChecked] = React.useState(false);
const handleChange = (event: React.ChangeEvent<htmlInputElement>) =>
setChecked(event.target.checked);
;
return (
<>
<List>
<ListItem alignItems="center">
<Checkbox
checked=checked
onChange=handleChange
inputProps= "aria-label": "primary checkbox"
/>
<TextField
fullWidth
disabled=checked
label="disable when checkbox checked"
/>
</ListItem>
<ListItem alignItems="center">
<Typography variant="subtitle1" style= marginRight: "3px" >
Hello
</Typography>
<TextField
fullWidth
disabled=!checked
label="enable when checkbox checked"
/>
</ListItem>
</List>
</>
);
【讨论】:
【参考方案2】:<Grid container alignContent="center" alignItems="center" direction="row" xs=12>
<Grid item xs="auto">
<Checkbox />
</Grid>
<Grid item xs>
<TextField fullWidth label="I am a Textbox" />
</Grid>
</Grid>
这应该可行。
【讨论】:
以上是关于创建带有文本字段的 Material Ui 复选框的主要内容,如果未能解决你的问题,请参考以下文章
带有自定义组件的 Material ui 文本字段和 Formik 表单
使用带有 Material UI 的自定义主题在文本字段上指定悬停边框颜色