react-hook-form 条件表单值控制
react-hook-form conditional form value control
我想在 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 &&
(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>
)
React 实际上并没有向您抛出错误,而是向您抛出 eslint 警告。
您可以通过在依赖项错误上方添加此行来忽略特定的 linting 错误:
// eslint-disable-next-line
例子
useEffect(() => {
console.log("My code")
// eslint-disable-next-line
}, [])
我想在 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 &&
(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>
)
React 实际上并没有向您抛出错误,而是向您抛出 eslint 警告。
您可以通过在依赖项错误上方添加此行来忽略特定的 linting 错误:
// eslint-disable-next-line
例子
useEffect(() => {
console.log("My code")
// eslint-disable-next-line
}, [])