@heducose

Как перенести этот код в Vuex?

Нужно перенести кусок логики в Vuex.

Оригинал:

<template>
  <section>
    <label for="email">Email</label>
    <input v-model="user.email">
    <label for="password">Password</label>
    <input v-model="user.password">
    <button @click="submit">click</button>
    <p>{{data}}</p>

  </section>
</template>

data () {
 return {
   user: {
      email: '',
      password: ''
    },
    data: ''
}
}

метод:

submit () {
      axios.post('http://localhost:7777/signup', this.user)
        .then((res) => {
          this.data = res.data.token<code></code>
          console.log(this.data)
        })
    }

Вот что набросал в Vuex:

export const store = new Vuex.Store({
  state: {
    user: {
      email: '',
      password: ''
    },
    data: ''
  },
  mutations: {
    stuff (state, data) {
    }
  },
  actions: {
    asyncstuff ({ commit, state }) {
      axios.post('http://localhost:7777/signup', state.user)
        .then((res) => {
          commit('stuff')
        })
    }
  }
})

registerUser () {
      this.$store.dispatch('asyncstuff', this.user)
    }

<input v-model="$store.state.user.email">
    <label for="password">Password</label>
    <input v-model="$store.state.user.password">
    <button @click="registerUser">click</button>
    <p>{{$store.state.data}}</p>

В общем-то, сохранение в базу, т.е. POST работает, НО, я не могу понять как мне получить res? Как вывести res.data.token из Vuex?
  • Вопрос задан
  • 342 просмотра
Решения вопроса 1
kulakoff
@kulakoff Куратор тега Vue.js
Vue.js developing
А в чем проблема? Передайте res в коммит вторым параметром, извлеките из него что нужно, сохраните в стор.
Ещё у вас чуть идеология vuex нарушается, вы используете v-model т.е напрямую изменяете стейт, а должны это делать только через мутации.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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