Estoy pensando cómo pasar la devolución de llamada a la acción vuex
Intenté debajo del código pero no funcionó. El código se ejecuta antes de que lo dispare.
src/store/modules/web3.module.js
import Web3 from "web3"; const state = {}; const getters = {}; const mutations = {}; const actions = { async test(context, confirmCallback, rejectCallback) { confirmCallback(); rejectCallback(); } }; export default { state, getters, actions, mutations };aplicación.vue
<template> <div id="app"></div> </template> <script> import { mapActions } from "vuex"; export default { name: "App", methods: { ...mapActions(["test"]), onModalOpen() { console.log("open"); }, onModalClose() { console.log("Close"); }, }, async created() { let result = await this.test({ confirmCallback: this.onModalOpen(), rejectCallback: this.onModalClose(), }); }, }; </script>El problema tiene lugar en 2 lugares:
() al final cuando lo pasa a través de un objeto:Resolver el problema de la carga útil
Una acción tiene 2 parámetros, primero viene el contexto, que es un objeto que contiene el estado, las mutaciones, etc., luego viene la carga útil, que también es un objeto.
const actions = { async test(context, {confirmCallback, rejectCallback}) { confirmCallback(); rejectCallback(); } } Resolver el problema de eliminación Para resolver el problema de eliminación, simplemente elimine el () al final como se muestra a continuación:
async created() { let result = await this.test({ confirmCallback: this.onModalOpen, rejectCallback: this.onModalClose, }); },