useSubscribe
Basic subscription you can use to be notified when form state changes.
Parameters
useSubscribe
takes only one parameter, the callback function that will receive the form states as parameter.
Returns
useSubscribe
does not return anything.
Usage
0
import { type FormEvent, useState } from 'react';
import type { IProps } from '../types';
import {
FormProvider,
type IFormValues,
useForm,
useSubscribe,
} from '@per-form/react';
function Submit() {
const [isValid, setIsValid] = useState(false);
useSubscribe(({ isValid }) => setIsValid(isValid));
return (
<button disabled={!isValid} type="submit">
Submit
</button>
);
}
export default function Demo(props: IProps) {
function handleSubmit(_e: FormEvent<HTMLFormElement>, values: IFormValues) {
console.log(values);
}
const { formProps, ...context } = useForm({
...props,
onSubmit: handleSubmit,
});
const { errors } = context;
return (
<FormProvider {...context}>
<form {...formProps}>
<input name="text" required />
{errors.all.text && <div className="error">{errors.all.text}</div>}
<Submit />
</form>
</FormProvider>
);
}