SkipTyler
@SkipTyler
Junior+ Front-End developer

Как передать в дочерний компонет значения из стейта?

Всем привет.

Есть у меня компонент, в котором 2 инпута.

...
<input class="reg__label__input" type="email" disabled 
       :placeholder="$t('registrations.emailPlaceholder')" 
       v-model="$store.state.registrations.user_email">
...
<input class="reg__label__input" :type="passwdType" ref="passwdInput" 
       v-model="$store.state.registrations.password" 
       @input="eventPassInput($event)" 
       @blur="checkPlaceholder()">
...


Этот компонет будет использоваться в нескольких местах.

И v-model всегда будет разный
И всегда из state

Вот не могу понять, как правильно прокинуть данные с родительского компонета, что бы из дочернего я мог их изменять.

Пытался разными способами, и props и computed
Но что то явно не так.

Прошу помощи\совета у вас.
Спасибо!
  • Вопрос задан
  • 233 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Пытался разными способами <...> что то явно не так

А как мне понять, что у вас не так, если вы не показали, как пытались?

v-model="$store.state.registrations.user_email"

Изменять состояние вне мутаций не следует, сделайте computed свойство, геттер которого будет забирать данные из хранилища, а сеттер вызывать мутацию:

user_email: {
  get() {
    return this.$store.state.registrations.user_email;
  },
  set(val) {
    this.$store.commit('update_user_email', val);
  },
},

v-model всегда будет разный

Имя редактируемого свойства можно оформить в виде параметра компонента, и передавать его в мутацию вместе с новым значением (или передавать объект вида { имя_свойства: значение } и с помощью Object.assign закидывать его в объект в стейте - так за один вызов мутации можно будет обновлять несколько свойств).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@grinat
У всех компонентов всегда есть доступ ко всему стейту, его прокидывать никак не нужно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы