Javascript 反应钩形式不';使用物料界面按钮时不工作
这是我没有物料界面按钮的代码:Javascript 反应钩形式不';使用物料界面按钮时不工作,javascript,reactjs,Javascript,Reactjs,这是我没有物料界面按钮的代码: const {register, handleSubmit} = useForm(); const onSubmit = (data) => { console.log(data) } const handleChange = (e) => { console.log(e.target.files) } ... <form id="myFile" onSubmit={handleSubmit(onSubm
const {register, handleSubmit} = useForm();
const onSubmit = (data) => {
console.log(data)
}
const handleChange = (e) => {
console.log(e.target.files)
}
...
<form id="myFile" onSubmit={handleSubmit(onSubmit)}>
<input id="file1" type="file" {...register("file1")} onChange={handleChange}/>
<input type="submit"/>
</form>
const{register,handleSubmit}=useForm();
const onSubmit=(数据)=>{
console.log(数据)
}
常数handleChange=(e)=>{
console.log(e.target.files)
}
...
这对我来说是可行的,但当我尝试添加材质UI按钮而不是输入时,我会得到onChange值,但当我单击submit时。我没有任何表单数据
const {register, handleSubmit} = useForm();
const onSubmit = (data) => {
console.log(data)
}
const handleChange = (e) => {
console.log(e.target.files)
}
...
<form id="myFile" onSubmit={handleSubmit(onSubmit)}>
<input id="file1" type="file" {...register("file1")} onChange={handleChange}
style={{display:"none"}}/>
<label htmlFor="file1">
<Button variant="contained" component="span">
Choose file
</Button>
</label>
<input type="submit"/>
</form>
const{register,handleSubmit}=useForm();
const onSubmit=(数据)=>{
console.log(数据)
}
常数handleChange=(e)=>{
console.log(e.target.files)
}
...
选择文件
这里有什么解决方法吗?您可以尝试以下方法:
import React, { useState } from 'react';
import { Button, TextField } from '@material-ui/core';
import useForm from 'react-hook-form';
import { object, string } from 'yup';
const Form: React.FC = () => {
const schema = object().shape({
username: string().required('username required'),
password: string().required('password required'),
});
const { register, handleSubmit, errors } = useForm({ validationSchema: schema });
const onSubmit = (data: any) => {
console.log(data);
};
return (
<form onSubmit={handleSubmit(onSubmit)}>
<TextField
name="username"
error={!!errors.username}
label="Username"
helperText={errors.username ? errors.username.message : ''}
type="email"
inputRef={register}
fullWidth
/>
<TextField
name="password"
error={!!errors.password}
label="Password"
inputRef={register}
helperText={errors.password ? errors.password.message : ''}
type="password"
fullWidth
/>
<Button
color="secondary"
type="submit"
variant="contained"
fullWidth
>
Submit
</Button>
</form>
);
};
import React,{useState}来自“React”;
从“@material ui/core”导入{按钮,TextField};
从“react hook form”导入useForm;
从'yup'导入{object,string};
常数形式:React.FC=()=>{
const schema=object().shape({
用户名:string().required('username required'),
密码:string().required('password required'),
});
const{register,handleSubmit,errors}=useForm({validationSchema:schema});
const onSubmit=(数据:any)=>{
控制台日志(数据);
};
返回(
提交
);
};
参考:您忘记提及按钮的类型了 对于默认材质,ui按钮类型为
type="button"
你应该提到
type="submit"
你喜欢这个吗
<Button type="submit" variant="contained" component="span">
Choose file
</Button>
选择文件