Чтобы была обратная связь, вам из родительского компонента в дочерний нужно передать объект/строку/массив (не суть важно что именно), который дочерний компонент будет изменять.
Привязка input к объекту делается через атрибут `v-model`.
Будет ли при этом использоваться vuex или нет, это не важно, подход при этом никак не изменится. Без vuex вы передаёте объект, лежащий в родительском компонента, а с vuex будете брать объект из vuex хранилища.
Немного отредактировал ваш пример
Родитель<template lang="pug">
form
div you wrote: {{input_data.value != '' ? input_data.value : 'nothing'}}
c_input(
:input_data="input_data"
)
button Отправить
</template>
<script>
import c_input from './test_2'
export default {
components: { c_input },
data() {
return {
input_data: {
name: Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5),
append: '',
value: '',
placeholder: '',
error: 'zz'
}
}
}
}
</script>
Потомок<template lang="pug">
.form-group
input(
type="text"
class="form-control"
:class="input_data.append"
v-model="input_data.value"
:placeholder="input_data.placeholder"
:name="input_data.name"
:id="input_data.name"
)
label(
:for="input_data.name"
generated="true"
class="error"
v-if="input_data.error"
) error: {{ input_data.error }}
</div>
</template>
<script>
export default {
props: {
input_data: Object
}
}
</script>
На скриншоте выделил важные моменты что откуда куда передаётся
take.ms/YvbyL
take.ms/7uGdO