React Hook Form
Hook'u register, Controller, Zod ve ViraStack Mask ile aynı formda kullanın.
React Hook Form tek doğruluk kaynağı olarak kalır. Hook yalnızca input'a props ekler; form değerini hiçbir zaman tutmaz.
register()
const { inputProps, btnProps, rule } = useViraPassword({ policy, value: password })
// inputProps yalnızca öznitelik taşır: register()'dan önce ya da sonra spread edin
<input {...inputProps} {...form.register("password", rule)} />
<button {...btnProps} />useWatch()
reset() ve setValue() input olayı tetiklemeden değeri değiştirir. Güç ve matches bunları takip etsin diye value verin. useWatch, watch()'tan farklı olarak React Compiler ile de çalışır.
const password = useWatch({ control: form.control, name: "password" })
const { inputProps, strength } = useViraPassword({ policy, value: password })rule & deps
rule ilk hata anahtarını döndürür. deps, parola değişince tekrar alanını yeniden doğrular.
form.register("password", { ...rule, deps: ["confirm"] })
// deps yalnızca kullanıcı girişinde çalışır. setValue'dan sonra tekrar alanını siz kontrol edin:
form.setValue("password", next)
form.trigger("confirm")Forma method="post" verin. Hydration'dan önce form yerel olarak gönderilir ve varsayılan GET parolayı URL'ye yazar.
Controller
<Controller
control={form.control}
name="password"
render={({ field }) => <PasswordField field={field} />}
/>
function PasswordField({ field }: { field: ControllerRenderProps<Values, "password"> }) {
const { inputProps } = useViraPassword({
policy,
value: field.value,
inputProps: { ...field, onChange: (e) => field.onChange(e.target.value) },
})
return <input {...inputProps} />
}Zod resolver
Resolver varken register kuralları çalışmaz. Aynı politikayı evaluate ile Zod şemasına koyun:
Mask ile
ViraStack Mask v2 de değeri React Hook Form'da tutar; ikisi aynı useForm'u paylaşır. Farklı input'larda kullanın, asla aynı input'ta değil.
