You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// component A// there is already have a form (by useForm), const{
values,
setValues,}=useForm()// and then use setValues to set a new value, setValues({name: 'x',})// component B// create a new field (by useField, and have a avaliable initialValue y)const{
value
}=useField('name',undefined,{initialValue: 'y'})
when the compoent B is dynamic create, the name will y not x
I carefully checked the record of #3429. Maybe the above situation is an acquiescence behavior?
I am currently adding a optional props forceValuein to Component B for solve current issue.
// component B
// create a new field (by useField, and have a avaliable initialValue y)
const props = defienProps<{
forceValue?: any
// ...
}>()
const {
value
} = useField('name', undefined, {
initialValue: props.forceValue || 'y'
})
The initialValue on useField has priority over anything defined on the form. This is intended unfortunately.
There is no good way to satisfy both cases, it is a 50/50 toss on which behavior is correct depending on the case of course.
There is a long winded way to do it, you can try injecting the form context with inject or with useFormContext and check if the field value exists there before assigning it to initialValue.
const{ values }=useFormContext();const{
value
}=useField('name',undefined,{initialValue: values['name']??'default',});
This is something I'm considering to tackle in v5 but there is no right answer here so this is a bit tough to solve now.
What happened?
when the compoent B is dynamic create, the
name
willy
notx
Reproduction steps
See https://stackblitz.com/edit/puuk1z-imn8wg?file=src%2FApp.vue,src%2FInputText.vue&startScript=dev
Version
Vue.js 3.x and vee-validate 4.x
What browsers are you seeing the problem on?
Relevant log output
No response
Demo link
https://stackblitz.com/edit/puuk1z-imn8wg?file=src%2FApp.vue,src%2FInputText.vue&startScript=dev
Code of Conduct
The text was updated successfully, but these errors were encountered: