TGViewer
Frontend | Вопросы собесов Frontend | Вопросы собесов @easy_javascript_ru · 17.6K subscribers
Post #1648 3.33K
🤔 Расскажи о действиях в vuex

В Vuex (хранилище данных в Vue 2 и 3) actions используются для выполнения асинхронных операций, прежде чем изменить состояние (state).

🚩 Как работают actions?

🟠Определение action в `actions`
В actions передаётся объект context, из которого можно вызвать commit() для изменения state.
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment(state) {
state.count++;
}
},
actions: {
asyncIncrement(context) {
setTimeout(() => {
context.commit("increment"); // Вызываем мутацию через 1 сек
}, 1000);
}
}
});


🟠Как вызвать action?
Actions вызываются через dispatch(), а не commit().
store.dispatch("asyncIncrement");


🟠Actions с параметрами
Можно передавать параметры в dispatch(), чтобы использовать их внутри action.
actions: {
asyncIncrement(context, payload) {
setTimeout(() => {
context.commit("increment");
console.log("Задержка:", payload.delay);
}, payload.delay);
}
}

store.dispatch("asyncIncrement", { delay: 2000 });


🟠Возвращение `Promise` в actions
Если action должен дождаться завершения, можно вернуть Promise.
actions: {
fetchData(context) {
return fetch("https://jsonplaceholder.typicode.com/todos/1")
.then(response => response.json())
.then(data => {
console.log("Данные получены:", data);
});
}
}

store.dispatch("fetchData").then(() => {
console.log("Данные загружены!");
});


🟠Использование `async/await` в actions
Можно использовать async/await, чтобы код выглядел чище.
actions: {
async fetchData(context) {
const response = await fetch("https://jsonplaceholder.typicode.com/todos/1");
const data = await response.json();
console.log("Данные:", data);
}
}

await store.dispatch("fetchData");
console.log("Данные загружены!");


🟠Actions могут вызывать другие actions
Если нужно выполнить несколько actions последовательно, можно вызывать один action внутри другого.
actions: {
async firstAction(context) {
console.log("Первый action выполнен");
},
async secondAction(context) {
await context.dispatch("firstAction");
console.log("Второй action выполнен");
}
}

store.dispatch("secondAction");
// Выведет: "Первый action выполнен"
// Затем: "Второй action выполнен"


Ставь 👍 и забирай 📚 Базу знаний
  • 🤔 4
  • 💊 4
More from @easy_javascript_ru
  1. Oct 8, 2026Post #3029
  2. Oct 8, 2026🤔 Зачем нужен nginx? Nginx — это мощный веб-сервер, который используется для раздачи стат…
  3. Oct 7, 2026Post #3027
  4. Oct 7, 2026🤔 Что такое и как работает CI/CD? CI/CD — это процесс автоматизации: - CI (Continuous Int…
  5. Oct 7, 2026🤔 Что такое merge и rebase, в чем отличие друг от друга? Это два способа интеграции измен…
  6. Oct 7, 2026🔥 Скрытые вакансии с удаленной работой для Frontend разработчика, которые нигде больше не…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →