Managing asynchronous business logic with Vuex actions.
Actions
Action chứa logic nghiệp vụ, có thể bất đồng bộ (gọi API), và commit mutation để đổi state. Component dispatch action thay vì commit mutation trực tiếp khi có xử lý phức tạp hoặc async.
Định nghĩa và dispatch
Action nhận context (có commit, dispatch, state, getters) và payload.
Thường destructure context cho gọn:
Action bất đồng bộ
Đây là lý do chính action tồn tại: xử lý async rồi commit mutation đồng bộ.
dispatch trả về Promise
Action async trả về Promise, cho phép chờ hoàn tất hoặc nối chuỗi.
mapActions
Trộn dispatch thành methods.
Mutations vs Actions
Luồng chuẩn: component dispatch action, action xử lý async, action commit mutation, mutation đổi state.
Tips cho AEM
Action là nơi gọi Sling Servlet hoặc AEM API. Endpoint nên lấy từ Sling Model (truyền vào lúc khởi tạo state hoặc qua data attribute) thay vì hardcode, để chạy đúng theo môi trường và context path.
Lưu ý context path của AEM (vd /content/site/vn) khi build URL. Lấy base path từ cấu hình server-side thay vì giả định gốc /.