• Почему данные не подгружаются в форму?

    sanManjiro
    @sanManjiro Автор вопроса
    Хотел использовать Redux для этого, установил и настроил но из-за typescript не было компонента PersistGate, ну или он просто не определял типы, но я нашел для себя заглушку этого, не знаю правда настолько это правильный подход:
    useEffect(() => {
        if (dataForm) {
          setValue("amount", dataForm.amount);
          setValue("term", dataForm.term);
          setValue("lastName", dataForm.lastName);
          setValue("firstName", dataForm.firstName);
          setValue("middleName", dataForm.middleName);
          setValue("numberDate", dataForm.dateOfBirth);
          setValue("numberPhone", dataForm.numberPhone);
          setValue("email", dataForm.email);
          setValue("checkbox", dataForm.checkbox);
        }
      }, [dataForm, setValue]);

    , я добавил просто второй useEffect после первого, где storedData и просто руками записываю значения в форму, это работает как надо и ошибки нету, но я думаю но КОСТЫЛЬ ли это и можно ли считать тему закрытой.
    Ответ написан
  • Как предзагрузить компонент?

    sanManjiro
    @sanManjiro Автор вопроса
    Все оказалось очень просто, я просто сделал функцию асинхронной и все)
    Ответ написан
    Комментировать
  • Как перезаписывать объекты в useState?

    sanManjiro
    @sanManjiro Автор вопроса
    Решил я эту проблему, заключалась она в том, что я о приоре не правильно записывал значения в объект, нужно было писать не setPassport({...passport, placeOfIssue: value}), а что-то вроде такого:
    useEffect (() => {
        PlaceOfIssueScript(
          (value) => setPassport(prevState => {
            return {...prevState, placeOfIssue: value }
          }),
          (value) => setPassport(prevState => {
            return {...prevState, ouCode: value.replace(/[^0-9]/g, '') }
          }),
          setStatusSelec
        )
      }, [passport])

    Я не знаю почему не работал предыдущий способ, потому что по факту, мы делаем то же самое, берем наши объект и применяем на них спрутинг, а потом изменяем то значение в объекте, которое нам нужно изменить.
    Ответ написан
    Комментировать
  • Как запретить ввод цифры 8 и 7 вторым символом через .replace()?

    sanManjiro
    @sanManjiro Автор вопроса
    Я сделал это путем создание функции, которая позволяет первый раз при вводе номера удалять цифры 8 или 7, вот сама функция:
    const setCharAt = (str,index,chr) => {
      if(index > str.length-1) return str;
      str.substring(0,index) + chr + str.substring(index+1);
    }
    
    export const formatNumber = (string) => {
      if (string.charAt(0) === "8" || string.charAt(0) === "7") {
        return string = setCharAt(string, 0, "")
      } else if ((string.charAt(0) === "8" || string.charAt(0) === "7") && (string.charAt(1) === "8" || string.charAt(1) === "7")) { 
        string = setCharAt(string, 0, "")
        return string = setCharAt(string, 1, "")
      }
    }
    Ответ написан
  • Как добавить текст к числу в поле Value?

    sanManjiro
    @sanManjiro Автор вопроса
    Вопрос можно считать закрытым, очень сильно помучившись, методом научного тыка я смог сделать маску, которая добавляет в конец нужный знак или же текст, и при этом делит число на разряды пробелом, и запрещает вводить числа, установленные в mix и max, вот код кому надо:
    <IMaskInput
         value={convertObjectValues(valueSum, true)}
         mask={"a d"}
         blocks={{ d: { mask: "₽" }, a:{mask: Number, thousandsSeparator: ' ', min: 1500, max: 15000} }}
         lazy={false}
         placeholder={valueSum}
         unmask={true}
         onAccept={ (value) => setValueSum(value) }
         onBlur={handlerBlurSum}
         onPointerLeave={handlerBlurSum}
         onClick={handlerBlurSum}
     />
    Ответ написан
    Комментировать