@andrey_koyta

VueJS Mutations and Actions — не передается объект payload, почему?

Есть три юзера.
users: [
      {id: 1, name: "Andrey", registered: false},
      {id: 2, name: "Ivan", registered: false},
      {id: 3, name: "Max", registered: false}
]

Есть метод в компоненте
methods: {
    register(user) {
        console.log('in method user id = ', user.id)
        this.$store.dispatch('register', {
            payload: {
                type: 'register',
                user
            }
        })
    }
}

Соответственно есть Action:
register({commit}, payload) {
    commit('register', payload)
}

И к нему мутация:
register(state, payload) {
    const user = state.users.find(user => {
      return user.id === payload.user.id
    })
    user.registered = true;
    const registration = {
      userId: payload.user.id,
      name: user.name
    }
    state.registrations.push(registration)
  }


В чем проблема:
В мутации уже на первой строке
const user = state.users.find(user => {
    return user.id === payload.user.id
})

выдает ошибку, что payload.user - тип undefined (Cannot read property 'id' of undefined). Соответственно, он еще даже в Action'е undefined типа. Почему так происходит? Почему я могу напрямую передать объект user, а передать объект user в объекте payload не получается?

Что-то я делаю не так, жду ваших замечаний...
  • Вопрос задан
  • 276 просмотров
Решения вопроса 1
@andrey_koyta Автор вопроса
Вопрос закрыт, сам затупил...
Ошибка была в этом коде:
this.$store.dispatch('register', {
     payload: {
            type: 'register',
            user
     }
})

А точнее, я зачем-то написал в ОБЪЕКТЕ payload: {еще один объект}
Правильно так:
this.$store.dispatch('register', {
            type: 'register',
            user
})
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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