У меня есть объект, который выглядит так:
visitorInfo: {
name: {
name: 'Name',
value: '',
isInvalid: false,
errors: []
},
email: {
name: 'Email address',
value: '',
validation: {
isRequired: true
},
errors: []
},
phone: {
name: 'Phone number',
value: '',
errors: []
}
},
Я использую watch для добавления сообщений об ошибках, когда value
из fields
изменяется (например, когда пользователь печатает в форме):
fields: {
handler (fields) {
Object.entries(fields).forEach(([key, value]) => {
const field = fields[key]
const isRequired = field.validation.isRequired && field.value
if (isRequired) {
field.errors.push({
errorType: 'isRequired',
message: 'This field is required.'
})
}
})
},
deep: true
}
Но, как вы можете видеть, есть проблема. Этот бит
field.errors.push({
errorType: 'isRequired',
message: 'This field is required.'
})
Запустит бесконечный цикл, так как он изменяет fields
.
Как решить эту проблему?