Я делаю на Vue каталог объектов культурного наследия.
Просто страница с карточками объектов, как магазин одежды.
Я использую VueX для получения данных через API и их хранения.
Во-первых думаю надо сначала уточнить.
У меня есть состояние heritageObjects: [], где хранятся объекты.
Также у меня есть четыре actions для работы с API:
1. GET_HERITAGEOBJECTS_FROM_DB
2. APPEND_HERITAGEOBJECT_TO_DB
3. REMOVE_HERITAGEOBJECT_FROM_DB
4. EDIT_HERITAGEOBJECT_IN_DB
Думаю понятно что все они означают.
Так вот, нормальным ли является практика, что например после добавления новой записи в БД, я снова делаю запрос на получение всех записей из БД?
Ну то есть внутри APPEND_HERITAGEOBJECT_TO_DB я делаю так:
1. Делаю POST-запрос для добавления новой записи в БД
2. Снова получаю все записи из БД с помощью GET_HERITAGEOBJECTS_FROM_DB
Точно также после REMOVE_HERITAGEOBJECT_FROM_DB и EDIT_HERITAGEOBJECT_IN_DB я собираюсь каждый раз заново делать запрос на получение всех записей из БД.
Ну и если такая практика нормальная, то вот
вопрос: как внутри action использовать другой action?
Как внутри APPEND_HERITAGEOBJECT_TO_DB вызвать GET_HERITAGEOBJECTS_FROM_DB?
GET_HERITAGEOBJECTS_FROM_DB({commit}) {
return axios('http://127.0.0.1:3000/test/1', {
method: "GET"
})
.then((heritageObjects) => {
commit('SET_HERITAGEOBJECTS_TO_STATE', heritageObjects.data);
return heritageObjects;
})
.catch((error) => {
console.log(error);
return error;
})
},
APPEND_HERITAGEOBJECT_TO_DB() {
return axios('http://127.0.0.1:3000/test/', {
method: "POST",
data: { name: "", description: "" }
})
.then((heritageObject) => {
return heritageObject;
})
.catch((error) => {
console.log(error);
return error;
})
// Вот так не работает почему-то:
// this.GET_HERITAGEOBJECTS_FROM_DB()
// Vue ругается: error Unreachable code no-unreachable
}
Во-вторых, если практика каждый раз дёргать все записи из БД всё-таки ненормальная, правильно делать так что-ли на примере с APPEND_HERITAGEOBJECT_TO_DB:
1. Делаю POST-запрос для добавления новой записи в БД
2. С помощью мутацию меняю state heritageObjects: []
Или как?