sanManjiro
@sanManjiro

Как передать контроллер компонентом в другой компонент??

У меня есть компонент с контроллером, который мне нужно отрендерить в другом компоненте, проблема заключается в том, что компонент с контроллером на сайте есть, и есть даже поле для ввода, но вот useForm не видит этот контроллер.
Компонент с контроллером:
import React, { useEffect, useState } from 'react'
import { useForm, Controller } from 'react-hook-form'

import { WarrningError } from './helper/component/warrning-error';
import NumberFormat from 'react-number-format'


export const TestNumber = ( props ) => {
  const {
    control,
    formState: { errors }
  } = useForm({
    mode: "all"
  })


  useEffect(() => {
    setPhoneNumber(props.value)
  }, [props.value])


  const [phoneNumber, setPhoneNumber] = useState()


  return (
    <>
      <Controller
        control={control}
        name={props.name}
        rules={{
          required: true,
          minLength: {
            value: 11,
            message: "*Заполните полностью поле телефона",
          },
        }}
        render={({ field: { onChange, onBlur } }) => (
          <>
            <NumberFormat
              type="tel"
              format="+7 (###) ###-####"
              allowEmptyFormatting
              mask="_"
              onBlur={onBlur}
              value={phoneNumber}
              onValueChange={(values) => {
                const { formattedValue, value } = values;
                // formattedValue = $2,223
                // value ie, 2223
                setPhoneNumber(formattedValue.toString());
              }}
              onChange={(event) =>
                onChange(event.target.value.replace(/[^0-9]/g, ""))
              }
            />
            <WarrningError>
              {errors?.phoneNumber && (
                <p>
                  {errors?.phoneNumber?.message ||
                    `*Необходимо заполнить поле "Номер телефона"`}
                </p>
              )}
            </WarrningError>
          </>
        )}
      />
    </>
  );
}

То, как я его вызываю в другом компоненте:
import { TestNumber } from '../test-number'
...
<TestNumber name = "phoneNumber" value = { setPhoneNumber } />

То, как выглядит это на сайте, стрелочкой указан нужный компонент:
63021fdb8989a916219663.png
Проблема в том, что когда я отправляю форму, она приходит вида:
{lastName: 'Фывфыв', firstName: 'Фывфыв', middleName: '', email: 'asdf@gmail.com'}
email: "asdf@gmail.com"
firstName: "Фывфыв"
lastName: "Фывфыв"
middleName: ""
[[Prototype]]: Object

То есть поля с номером телефона нет. Не знаю что делать, совсем недавно начал пользовать контроллерами, может то, что я пытаюсь сделать, сделать и не возможно. Заранее спасибо.
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
24 нояб. 2024, в 21:55
200000 руб./за проект
24 нояб. 2024, в 21:41
1000 руб./за проект
24 нояб. 2024, в 21:19
35000 руб./за проект