Встречается на собеседованиях • сегодня

Как на Vue создать динамическую форму с передачей данных в компоненты любого уровня вложенности

Для создания динамической формы в Vue с передачей данных между компонентами любого уровня используйте:

  1. Vuex/Pinia - для глобального состояния:
js
// store.js
state: { formData: {} },
mutations: {
  updateField(state, { path, value }) {
    // deep update nested fields
    path.reduce((obj, key, i) => {
      if (i === path.length - 1) obj[key] = value
      else if (!obj[key]) obj[key] = {}
      return obj[key]
    }, state.formData)
  }
}
  1. Provide/Inject - для глубокой вложенности:
js
// Parent.vue
provide() {
  return { 
    formData: this.formData,
    updateForm: this.updateField 
  }
}

// Child.vue
inject: ['formData', 'updateForm'],
methods: {
  handleInput(e) {
    this.updateForm(['nested', 'field'], e.target.value)
  }
}
  1. v-model + computed для двустороннего связывания:
js
computed: {
  field: {
    get() { return this.formData.nested.field },
    set(value) { this.updateField(['nested', 'field'], value) }
  }
}

Для динамических полей используйте v-for с генерацией уникальных ключей.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы