Я создал рабочий пример для вас здесь . Несколько комментариев:
1) Я не вижу причины, по которой вы хотели бы обновить магазин при вводе?Вы можете сделать это только один раз, когда нажата кнопка
2) @input
Событие отправлено и введено событие.Фактическое значение вложено во входное событие в data
, поэтому значение будет в $event.data
.
3) Если вы обновите хранилище на входе, оно переопределит предыдущие входные значения
<script src="https://unpkg.com/vue"></script>
<script src="https://unpkg.com/vuex"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<div id="app">
<followers></followers>
</div>
<div id="followers">
<div>Login Email: {{_loginEmail }}</div>
<div>Login Password: {{ _loginPassword }}</div>
<input type="text" name="email" placeholder="Email" required="required" v-model="loginEmail" @input="onEmailInput">
<input type="text" name="password" placeholder="Password" v-model="loginPassword" @input="onPassWordInput">
<button @click="onSave">Save To State</button>
</div>
Vue.component('followers', {
el: "#followers",
data() {
return {
followers: 0,
loginEmail: "",
loginPassword: "",
}
},
created() {
this.loginEmail = this.$store.state.loginEmail;
},
methods: {
/* onEmailInput(event) {
this.$store.dispatch("setEmail", event.data)
},
onPassWordInput(event) {
this.$store.dispatch("setPassword", event.data)
}, */
onSave() {
this.$store.dispatch("setLogin", {
email: this.loginEmail,
password: this.loginPassword
})
}
},
computed: {
_loginEmail() {
return this.$store.state.loginEmail
},
_loginPassword() {
return this.$store.state.loginPassword
}
}
});
const store = new Vuex.Store({
state: {
loginEmail: "",
loginPassword: ""
},
actions: {
setEmail({
commit
}, email) {
commit("SET_LOGIN_EMAIL", email);
},
setPassword({
commit
}, password) {
commit("SET_LOGIN_PASSWORD", password);
},
setLogin({
commit
}, loginObj) {
commit("SET_LOGIN_EMAIL", loginObj.email);
commit("SET_LOGIN_PASSWORD", loginObj.password);
}
},
mutations: {
SET_LOGIN_EMAIL(state, email1) {
state.loginEmail = email1
},
SET_LOGIN_PASSWORD(state, password) {
state.loginPassword = password
}
}
})
const app = new Vue({
store,
el: '#app'
})