react-hook-формирует управление значением условной формы

#reactjs #react-hook-form

#reactjs #react-hook-form

Вопрос:

Я хочу удалить значение модели при изменении manufacturerWatchValue после инициализации формы.

Но модель теряет свое значение при инициализации формы, поскольку инициализированная переменная находится в списке зависимостей. Следовательно, мне пришлось удалить его из списка зависимостей, чтобы заставить его работать.

Несмотря на то, что он работает, как ожидалось, в React говорится, что строка 138: 5: React Hook useEffect имеет отсутствующую зависимость: ‘initialized’. Либо включите его, либо удалите массив зависимостей

Есть ли способ обойти эту ошибку при достижении логики?

 const MyForm = ({ itemId }) => {
    const { watch, setValue, handleSubmit, reset } = useForm()
    const [initialized, setInitialized] = useState(false)
    const manufacturerWatchValue = watch("manufacturer")

    useEffect(() => {
        // Initializing Form Here
        itemId amp;amp;
            (async () => {
                const oneItem = await getOneResult(itemId)
                reset(oneItem)
                setInitialized(true)
            })()

        // Terminating Form Here
        return () => {
            reset({})
            setInitialized(false)
        }
    }, [dispatch, reset, itemId])

    useEffect(() => {
        if (initialized) {
            setValue("model", "")
        }
    }, [manufacturerWatchValue, setValue /*, initialized */])

    const onSubmit = (data) => {
      console.log(data)
    }

    return (
        <form onSubmit={handleSubmit(onSubmit)}>
            <input type="text" name="model" ref={register} />
            <input type="text" name="manufacturer" ref={register} />
        </form>
    )
  

Комментарии:

1. Возможно ли вообще изменить значение manufacturerWatchValue при инициализации false ?

2. нет, значение изменяется только после инициализации.

Ответ №1:

React на самом деле не выдает вам ошибку, вместо этого выдает вам предупреждение eslint.

Вы можете игнорировать конкретную ошибку компоновки, добавив эту строку над ошибкой зависимости:

 // eslint-disable-next-line
  

Пример

 useEffect(() => {
  console.log("My code")
  
  // eslint-disable-next-line
}, [])