Back to Woocommerce

Form

packages/js/components/src/form/README.md

10.8.0-dev2.7 KB
Original Source

Form

A form component to handle form state and provide input helper props.

Usage

jsx
const initialValues = { firstName: '' };

<Form onSubmit={ ( values ) => {} } initialValues={ initialValues }>
	{ ( { getInputProps, values, errors, handleSubmit } ) => (
		<div>
			<TextControl
				label={ 'First Name' }
				{ ...getInputProps( 'firstName' ) }
			/>
			<Button
				isPrimary
				onClick={ handleSubmit }
				disabled={ Object.keys( errors ).length }
			>
				Submit
			</Button>
		</div>
	) }
</Form>;

Usage with FormContext

jsx
const initialValues = { firstName: '' };

const Field = () => {
	const formProps = useFormContext< { foo: string } >();

	return <input type="text" { ...formProps.getInputProps<string>( 'firstName' ) } />
}

<Form
	onSubmit={ ( values ) => {} }
	initialValues={ initialValues }
>
	{ ( {
		errors,
		handleSubmit,
	} ) => (
		<div>
			<Field />
			<Button
				isPrimary
				onClick={ handleSubmit }
				disabled={ Object.keys( errors ).length }
			>
				Submit
			</Button>
		</div>
	) }
</Form>

To see the properties available within useFormContext() check out the FormContext type here.

Props

NameTypeDefaultDescription
children*nullA renderable component in which to pass this component's state and helpers. Generally a number of input or other form elements
errorsObject{}Object of all initial errors to store in state
initialValuesObject{}Object key:value pair list of all initial field values
onSubmitFunctionnoopFunction to call when a form is submitted with valid fields
validateFunctionnoopA function that is passed a list of all values and should return an errors object with error response
touchedObject{}This prop helps determine whether or not a field has received focus
onChangeFunctionnullA function that receives the value of the input; called when selected items change, whether added, edited, or removed