Blog>
Snippets

Real-Time Validation Feedback

Demonstrate linking TanStack Form field states to CSS classes for providing immediate visual feedback on validation errors, using CSS transitions for smooth error display.
import { useForm } from '@tanstack/react-form';
import React from 'react';
Import necessary modules from TanStack Form and React.
const formValidationSchema = {/* Your validation schema here*/};
Define the schema for form validation, possibly using a library like Zod or Yup.
function MyForm() {
  const { formContext, getFieldState } = useForm({
    validate: formValidationSchema
  });
  const emailState = getFieldState('email');
  const isEmailError = emailState.error !== undefined;

  return (
    <form>
      <input
        type='email'
        {...formContext.getFieldProps('email', { required: true })}
        className={isEmailError ? 'error' : ''}
      />
      {isEmailError && <span className='error'>{emailState.error}</span>}
    </form>
  );
}
Create a React component for the form. Use useForm to create a form context and getFieldState to track the state of individual form fields, such as 'email'. Apply conditional class names based on field validation state.
const css = ".error { border-color: red; transition: border-color 300ms ease; }";
Define CSS for error state visual feedback. Use transitions for smooth appearance of validation errors.