问题描述
我尝试应用DRY并向上移动SaveButton。但是,无论何时执行此操作,都必须单击两次保存按钮才能将其触发。我认为它与const SaveButton = () => (
有关,但是我还不知道如何解决它。
const SettingsWrapper = ({
children,title,handleSubmit,isSubmitting,dirty,resetForm,}) => {
const classes = useStyles();
const SaveButton = () => (
<Button
type="submit"
variant="contained"
color="primary"
classes={{
root: clsx(classes.saveButton,{
[classes.saveButtonDirty]: !dirty,}),disabled: isSubmitting && classes.saveButtondisabled,}}
disabled={isSubmitting || !dirty}
onClick={handleSubmit}
>
Save
{isSubmitting && (
<CircularProgress
size={20}
thickness={5}
color="inherit"
className={classes.saveButtonProgress}
/>
)}
</Button>
);
return (
<>
<Fade in={dirty}>
<Grid
className={classes.saveBar}
container
justify="space-between"
alignItems="center"
>
<Grid>
<Typography
className={classes.unsavedChanges}
color="textSecondary"
variant="button"
>
Unsaved changes
</Typography>
</Grid>
<Grid>
<Button
variant="contained"
color="default"
onClick={resetForm}
className={classes.discardButton}
>
discard
</Button>
<SaveButton />
</Grid>
</Grid>
</Fade>
<Grid item className={classes.gridDivider}>
<Typography variant="h1">{title}</Typography>
</Grid>
{children}
<Grid item className={clsx(classes.gridDivider,classes.actionButton)}>
<SaveButton />
</Grid>
</>
);
};
export default SettingsWrapper;
编辑:父级组件
<Formik
initialValues={{[…]}}
onSubmit={onSubmit}
validateOnBlur={false}
validateOnChange={false}
>
{({
dirty,setFieldValue,values,}) => (
<FormikForm autoComplete="off" novalidate>
<SettingsWrapper
title="Profile settings"
dirty={dirty}
handleSubmit={handleSubmit}
isSubmitting={isSubmitting}
resetForm={resetForm}
>
[...]
</SettingsWrapper>
</FormikForm>
)}
</Formik>;
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)