-
Notifications
You must be signed in to change notification settings - Fork 68
Description
Hi,
Thanks for the wonderful video and for providing all the code.
I am creating a site and would like to make FormikSteps within component so I can reuse them and make sure I keep the code DRY.
The problem I am having is when calling the component which returns a FormikStep inside a FormikStepper, the label and validationSchema don't exist on the parent, therefore the FormikStepper cannot access them.
Please see some example code:
MyForm.js
export default function MyForm() {
const classes = useStyles();
return (
<Box p={2}>
<FormikStepper
initialValues={{ name: "" }}
onSubmit={(values, actions) => {
actions.setSubmitting(false);
console.log(values);
}}
>
<ReusableStep />
</FormikStepper>
</Box>
);
}
ReusableStep.js
export default function ReusableStep() {
return (
<FormikStep
label="Reusable Form Step"
validationSchema={Yup.object({})}
>
<Grid item xs={12} sm={true}>
<Field
component={TextField}
type="text"
name="name"
label="Name"
fullWidth
/>
</Grid>
<FormikStep />
)
}
When in the current state, the validation doesn't work, and the Material UI Step doesn't get a label.
The only way I can get it to work is by passing validationSchema and label to the ReusableStep:
<ReusableStep
label="Reusable Form Step"
validationSchema={Yup.object({})}
/>
This is not great, as I would have to repeat defining the schema each time I want to use the FormikStep.
Please could you help me get this sorted?
Many thanks,
Zac