如何使用 Material-UI 创建 onSubmit
Posted
技术标签:
【中文标题】如何使用 Material-UI 创建 onSubmit【英文标题】:How to create onSubmit with Material-UI 【发布时间】:2019-10-23 20:07:52 【问题描述】:所以我对 node.js/react/material-ui 还是很陌生。我一直在按照指南尝试建立一个网站,并且进展顺利。我决定为时髦的组件(不是指南的一部分)包含 material-ui,然后因为在使用主题 ui 时似乎无法触发自定义函数而陷入困境。
使用下面的代码,如果我放弃“类”道具,我可以创建一切正常。我可以添加我的功能,一切正常。但如果我这样做,我显然会失去所有的造型。
const styles = theme => (
// Styling - omitted
);
const Login = (props) =>
const classes = props;
return(
<div>
<Paper className=classes.root>
<form className=classes.container noValidate autoComplete="off">
<TextField
id="email"
label="Email"
className=classes.textField
InputProps=
className: classes.input
type="email"
name="email"
autoComplete="email"
margin="normal"
variant="outlined"
required
autoFocus
/>
<TextField
id="outlined"
label="Password"
className=classes.textField
InputProps=
className: classes.input
type="password"
autoComplete="current-password"
margin="normal"
variant="outlined"
required
/>
<Typography className=classes.divider />
<Button
type="submit"
variant="contained"
color="inherit"
className=classes.button
>
Login
</Button>
</form>
</Paper>
</div>
);
Login.propTypes =
classes: PropTypes.object.isRequired,
;
export default withStyles(styles)(Login);
我正在尝试结合样式以及能够触发自定义函数来提交表单数据。有人有什么想法吗?
【问题讨论】:
对于提交部分,您可以将onSubmit
属性传递给您的form
,它必须是带有单个参数event
的函数
【参考方案1】:
类属性/样式不应该对表单提交自定义功能有任何影响。如果您认为放弃“类道具”,您可以获得自定义功能 - 发布您的代码,以便我们可以进一步帮助您。 [您的代码缺少提交功能]
这是添加自定义提交功能的一种方法
const Login = (props) =>
const classes = props;
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
function handleSubmit(event)
event.preventDefault();
console.log( 'Email:', email, 'Password: ', password);
// You should see email and password in console.
// ..code to submit form to backend here...
return( <div >
<Paper className=classes.root>
<form className=classes.container onSubmit=handleSubmit >
<TextField
....
value=email
onInput= e=>setEmail(e.target.value)
.....
/>
<TextField
....
value=password
onInput= e=>setPassword(e.target.value)
....
/>
<Typography className=classes.divider />
<Button
type="submit"
....
className=classes.button
>
Login
</Button>
</form>
</Paper>
</div>
);
【讨论】:
真棒。我不知道从哪里开始,但这应该让我继续前进。稍后我会尝试一下,谢谢!以上是关于如何使用 Material-UI 创建 onSubmit的主要内容,如果未能解决你的问题,请参考以下文章
如何在 React-Amin 创建组件中使用 Steppers 添加 Material-UI 表单
Material-UI Typescript 如何在组件类中从 makeStyle() 创建样式实例
如何将material-ui Snackbar实现为全局函数?
如何使用 react-testing-library 测试包装在 withStyles 中的样式化 Material-UI 组件?