reactjs - 将数据从一个组件传递到另一个组件时,表单验证不起作用
问题描述
我是 React Js 的新手,我必须将数据从一个组件传递到另一个组件。我的问题在这里解决了:
但是,这里的第一个表单可以在没有任何验证的情况下提交。如何验证第一个表单,使其在为空时不会重定向到另一个页面?
代码如下:
const BookingBar = () => {
const classes = useStyles();
const [formData, setFormData] = useState({
appliance: "",
zipcode: ""
});
const handleUpdate = e =>
setFormData({
...formData,
[e.target.name]: e.target.value
});
const { appliance, zipcode } = formData;
return(
<div style={{ display: 'flex', flexFlow: 'Column wrap', justifyContent: 'center', margin: 'auto', padding: '0px 30px', lineHeight: '1.2em'}}>
<div>
<Typography variant="h6" style={{color: 'black', fontFamily: 'Ubuntu', lineHeight:"1.6em", textAlign: 'left', fontWeight: '400'}}>
I need an Engineer to repair my
</Typography>
</div>
<div >
<FormControl style={{width: '60%'}}>
<Select
value={appliance}
name="appliance"
id="demo-customized-select-native"
input={<BootstrapInput />}
onChange={e => handleUpdate(e)}
>
<MenuItem value={'Refrigerator'}>Refrigerator</MenuItem>
<MenuItem value={'Freezer'}>Freezer</MenuItem>
<MenuItem value={'Ice Maker'}>Ice Maker</MenuItem>
<MenuItem value={'Range'}>Range</MenuItem>
<MenuItem value={'Cooktop'}>Cooktop </MenuItem>
<MenuItem value={'Oven'}>Oven </MenuItem>
<MenuItem value={'Microwave'}>Microwave</MenuItem>
<MenuItem value={'Washing Machine'}>Washing Machine</MenuItem>
<MenuItem value={'Clothes Dryer'}>Clothes Dryer</MenuItem>
<MenuItem value={'Dishwasher'}>Dishwasher</MenuItem>
<MenuItem value={'Garbage Disposal'}>Garbage Disposal</MenuItem>
<MenuItem value={'Trash Compactor'}>Trash Compactor</MenuItem>
</Select>
</FormControl>
</div>
<div>
<Typography variant="h6" style={{color: 'black', fontFamily: 'Ubuntu', lineHeight:"1.6em", textAlign: 'left', fontWeight: '400'}}>
in
</Typography>
</div>
<div>
<FormControl style={{width: '60%'}}>
<BootstrapInput
value={zipcode}
name="zipcode"
onChange={e => handleUpdate(e)}
type="number"
id="demo-customized-textbox"
placeholder="Zip Code"/>
</FormControl>
</div>
<div style={{paddingTop: '1em'}}>
<Link to={`../Repair/${zipcode}/${appliance}`}>
<Button
variant="contained"
fullwidth
type="submit"
size='large'
style={{
backgroundColor: 'white',
color: '#153f5f',
textTransform: 'unset',
fontFamily: 'ubuntu',
fontWeight: '500',
fontSize: '14px',
borderRadius: "35px",
padding: '10px 0px!important',
}}>
Go
</Button>
</Link>
</div>
</div>
)};
export default BookingBar;
任何帮助,将不胜感激。谢谢
解决方案
推荐阅读
- c# - LINQ group by in Entity Framework Core 3.1
- visual-studio - Xamarin 应用程序开发设置为首次运行
- matlab - 如图所示,如何在点(1,80)上方的盒装轴顶部写A
- asp.net - 如何为 .NET 4.7.2 上的 OWIN OpenIdConnect.Nonce cookie 将 SameSite 值设置为 None 或 Undefined
- java - 如何在 gradle 中执行或构建子项目之前执行任务?
- c++ - 有没有办法在不使用#ifdef 的情况下在发布版本中编译单元测试函数体?
- python - 硒点击问题
- java - 在@Service 中创建 ObjectMapper 的 @Bean 时出错
- python - 您如何在使用百分比的同时使用减法?
- amazon-web-services - 如何使用 Eclipse JEE 在 AWS 环境中调试 Web 应用程序?