import { useField } from 'vee-validate' import { Ref, watch } from 'vue' export function useReactiveField(sourceRef: Ref, ...[name, rules, opts = {}]: Parameters>): ReturnType { const field = useField(name, rules, { ...opts, initialValue: sourceRef, }) const { value: fieldRef } = field watch(fieldRef, fieldValue => sourceRef.value = fieldValue) watch(sourceRef, sourceValue => { if (sourceValue !== fieldRef.value) { fieldRef.value = sourceValue } }) return field }