Есть класс:
export default class Product {
constructor(name) {
this.name = name
this.comments = []
}
addComment(comment) {
this.comments.push(comment)
}
removeComment(comment) {
const idx = this.comments.indexOf(comment)
if (idx !== -1) {
this.comments.splice(idx, 1)
}
}
}
export default class Comment {
constructor(name) {
this.name = name
}
}
Есть хранилище:
const store = new Vuex.Store({
state: {
products: []
},
mutations: {
addCommentToProduct(state, {product, comment}) {
product.addComment(comment)
},
actions: {
addCommentToProduct() {
const product = new Product('product 1')
const comment = new Comment('comment 1')
const data = {product, comment}
commit('addCommentToProduct', data)
}
}
}
});
1. Можно ли в мутации делать так изменения? (вызывать функции класса, а не писать код в мутации)
2. Когда я работаю с классами и вызываю их функции, пример product.addComment(), то после сохранения на сервер всего стейта, мне апи возвращает обычный джсон, который никак не связан с классами и от этого все функции не работают. Мне нужно сделать products.map(product => new Product(product)) и всех вложенных объектов чтобы создать классы из массива? Заюзать orm нет возможности.