首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在VUE 3中调用异步方法中的SweetAlert2

在VUE 3中调用异步方法中的SweetAlert2
EN

Stack Overflow用户
提问于 2021-07-20 09:07:30
回答 2查看 6.8K关注 0票数 1

如果无法从服务器中提取数据,我试图弹出甜味警报。

我在main.js中导入了甜警报:

代码语言:javascript
复制
import VueSweetalert2 from 'vue-sweetalert2'
import 'sweetalert2/dist/sweetalert2.min.css'

const app = createApp(App)
app.use(VueSweetalert2)
app.mount('#app')

在Table.vue组件中,我试图调用swal,但是得到了一个错误:

代码语言:javascript
复制
<script>
import axios from 'axios'
import { onMounted, ref } from 'vue'

export default {
    setup() {
        let transactions = ref([])

        onMounted(() => {
            getTransactions()
        })

        async function getTransactions() {
            try {
                let { data } = await axios.get('http://127.0.0.1:8000/api/transactions')
                transactions.value = data.data
            } catch(e) {
                this.$swal('Something went wrong.')
            }
        }

        return {
            transactions
        } 

    }
}
</script>

有什么解决办法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-23 21:41:58

您不能使用this作为setup()中的组件实例,因为尚未创建组件。获得该$swal属性还有其他方法。

vue-sweetalert2通过app.config.globalProperties.$swal道具公开SweetAlert。

在复合API中使用它的一个简单方法是通过inject()

代码语言:javascript
复制
import { inject } from 'vue'

export default {
    setup() {
        const swal = inject('$swal')

        async function getTransactions() {
            //...
            swal('Something went wrong.')
        }
    }
}

演示1

但是,在本例中,vue-sweetalert2文档建议直接使用sweetalert2

当使用"Vue3: Composition“时,最好不要使用这个包装器。直接调用sweetalert2更加实用。

您可以像这样直接使用sweetalert2

代码语言:javascript
复制
import { onMounted, inject } from 'vue'
import Swal from 'sweetalert2'

export default {
  name: 'App',
  setup() {
    async function getTransactions() {
      //...
      Swal.fire('Something went wrong.')
    }

    onMounted(() => getTransactions())
  }
}

演示2

票数 10
EN

Stack Overflow用户

发布于 2022-01-05 12:25:42

main.js文件中

代码语言:javascript
复制
import VueSweetalert2 from 'vue-sweetalert2';
import 'sweetalert2/dist/sweetalert2.min.css';

const app = createApp(App);

app.use(VueSweetalert2);
window.Swal =  app.config.globalProperties.$swal;
app.mount("#app");

在组合API中使用Swal.fire()

代码语言:javascript
复制
export default {
  setup() {
    function yourFunctionName() {
      Swal.fire('Hello !')
    }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68452269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档