Vue2升级Vue3(BootstrapVue+@vue/compat):setup中如何获取$bvModal?
在Vue 3 + @vue/compat + BootstrapVue 2中setup里获取$bvModal的方法
因为BootstrapVue 2是为Vue 2设计的,没有提供Vue 3 Composition API的直接支持,在@vue/compat兼容模式下,你可以通过以下方式在setup中获取$bvModal:
- 从
vue导入getCurrentInstance,它能获取当前组件的实例对象 - 通过实例的
proxy属性访问全局注册的$bvModal
具体代码示例:
<script setup> import { getCurrentInstance } from 'vue' // 获取当前组件实例 const instance = getCurrentInstance() // 拿到全局的$bvModal const $bvModal = instance.proxy.$bvModal // 示例:调用$bvModal打开确认弹窗 const openConfirm = () => { $bvModal.msgBoxConfirm('确定要执行此操作吗?', { title: '操作确认', size: 'sm', okVariant: 'primary', cancelVariant: 'secondary' }).then(confirmed => { if (confirmed) { // 确认后的业务逻辑 } }) } </script>
注意事项:
getCurrentInstance只能在setup函数内部或组件生命周期钩子中使用,不要在异步回调或外部独立函数中调用- 如果后续计划完全迁移到Vue 3生态,建议升级到BootstrapVueNext(BootstrapVue的Vue 3适配版),它提供了
useModal这类专门的Composition API工具,使用更贴合Vue 3的开发习惯
内容的提问来源于stack exchange,提问作者Eagle
相关产品推荐
相关产品推荐

