TypeError: Cannot destructure property

Viewed 48

TypeError: Cannot destructure property 'confirmPasswordFields' of 'templateConfirmPassword' as it is undefined.

The error is saying that I can't unstructure 'confirmPasswordFields' from undefined, but I can't understand, where is the error? I don't know what else I need to do to resolve this.

I'm a beginner, sorry for the question

Form

interface IFieldTemplateConfirmPassword {
  titleConfirmPassword: string;
  label: string;
  name: string;
  placeholder: string;
  id?: number;
}
interface ITemplateConfirmPassword {
  titleConfirmPassword: string;
  confirmPasswordFields: IFieldTemplateConfirmPassword[];
}

// Form component
function Form({
  templateConfirmPassword,
  onSubmit }: {
    templateConfirmPassword: ITemplateConfirmPassword;
    onSubmit: (values: any) => void
  }) {

  const { confirmPasswordFields } = templateConfirmPassword

const renderFieldsRegister = (confirmPasswordFields: IFieldTemplateConfirmPassword[]) => {
    return confirmPasswordFields?.map((confirmPasswordField) => {
      const { name, placeholder, label, id } = confirmPasswordField
      const props = {
        secret: 'password' as const
      }
      
      switch (props.secret) {
        case 'password':
          return (
            <div key={id} className={styles.formControl}>
              <label htmlFor={name} className="sr-only">{label}</label>
              <input
                {...register("passwordConfirmation")}
                type="password"
                name={name}
                id={name}
                placeholder={placeholder}
              // required
              />
              {errors?.passwordConfirmation?.message && (
                <small className="errorText">{errors?.passwordConfirmation?.message}</small>
              )}
            </div>
          )
      }
    })
  }

return (
    <>
        <form onSubmit={handleSubmit(onSubmit)}>
          {renderFieldsRegister(confirmPasswordFields)}
        </form>
    </>
  )
}

FormRegister

import Form from '../../../../src/components/Reusable/Form/Index'

function RegisterForm(props: any) {
  const templateConfirmPassword = {
    titleConfirmPassword: 'Confirm password',
    confirmPasswordFields: [
      {
        titleConfirmPassword: 'Password Confirmation',
        type: 'password',
        label: 'Password Confirmation',
        name: 'passwordConfirmation',
        placeholder: 'Confirma password'
      }
    ]
  }

  return (
    <div>
      <Form
        templateConfirmPassword={templateConfirmPassword}
        onSubmit={onSubmit}
      />
    </div>
  )
}
function onSubmit(values: any) {
  console.log(values)
}
export default RegisterForm
0 Answers
Related