返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue如何封装全局toast组件
  • 265
分享到

Vue如何封装全局toast组件

2024-04-02 19:04:59 265人浏览 泡泡鱼
摘要

本篇内容主要讲解“Vue如何封装全局toast组件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue如何封装全局toast组件”吧!一. 借助 vue-cli

本篇内容主要讲解“Vue如何封装全局toast组件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue如何封装全局toast组件”吧!

一. 借助 vue-cli

1. 定义 Toast 组件

// components/Toast

<template>
  <transition name="fade">
    <div v-show="visible">{{message}}</div>
  </transition>
</template>

<script>
export default {
  data () {
    return {
      visible: false,
      message: ""
    }
  }
}
</script>

<style scoped>
div {
  position: fixed;
  top: 30%;
  left: 50%;
  padding: 5px 20px;
  color: #fff;
  background-color: #424242;
  border-radius: 5px;
  text-align: center;
  transfORM: translate(-50%, -50%);
}

.fade-enter-active,
.fade-leave-active {
  transition: opacity .5s;
}
.fade-enter, .fade-leave-to {
  opacity: 0;
}
</style>

2. 在 main.js 里面配置

import Vue from "vue"
import App from "./App.vue"
import Toast from "./components/Toast"

// 定义插件对象
const ToastObj = {
  install: function (Vue) {
    // 创建一个Vue的“子类”组件
    const ToastConstructor = Vue.extend(Toast)
    // 创建一个该子类的实例,并挂载到一个元素上
    const instance = new ToastConstructor()
    console.log(instance)
    // 将这个实例挂载到动态创建的元素上,并将元素添加到全局结构中
    instance.$mount(document.createElement("div"))
    document.body.appendChild(instance.$el)

    // 在Vue的原型链上注册方法,控制组件
    Vue.prototype.$toast = (msg, duration = 1500) => {
      instance.message = msg
      instance.visible = true
      setTimeout(() => {
        instance.visible = false
      }, duration)
    }
  }
}
Vue.use(ToastObj)

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount("#app")

3. 在其他组件内使用

<template>
  <div>
    <h1>{{ msg }}</h1>
  </div>
</template>

<script>
export default {
  name: "HelloWorld",
  data: () => {
    return {
      msg: "HelloWord"
    }
  },
  mounted () {
   // 使用 toast 组件
    this.$toast("组件挂载成功")
  }
}
</script>

二、不借助 vue-cli

 在借助 vue-cli 的情况下,可以方便实现组件的导入导出,但是在不借助构建工具的情况下,就需要使用其他方法了

1. 注册 toast 组件

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="./static/vue/vue.min.js"></script>
</head>
<body>
  <div id="app">
    <my-button></my-button>
  </div>
  <div id="toast"></div>
  <script>
    // 定义 toast 全局组件
    const Toast = Vue.component("toast", {
      data() {
        return {
          isshow: false,
          message: "全局提示",
          wrapperStyle: {
            position: "fixed",
            top: "20%",
            left: "50%",
            zIndex: 10000,
            padding: "6px 12px",
            backgroundColor: "#424242",
            borderRadius: "5px",
            transform: "translate(-50%, -50%)"
          },
          textStyle: {
            color: "#fff",
            fontSize: "14px"
          }
        }
      },
      template: `<div v-show="isShow" :style="wrapperStyle">
                  <span :style="textStyle">{{ message }}</span>
                </div>`
    })

2. 注册 toast 插件

// 定义插件对象
const ToastObj = {
  install: function (Vue) {
    // 创建一个 toast 组件实例,并挂载到一个元素上
    const instance = new Toast()
    // 将这个实例挂载到DOM中
    instance.$mount("#toast")

    // 在Vue的原型链上注册方法,控制组件
    Vue.prototype.$toast = ({message, duration = 2000} = {}) => {
      instance.message = message
      instance.isShow = true

      setTimeout(() => {
        instance.isShow = false
      }, duration)
    }
  }
}
// 注册 toast 插件
Vue.use(ToastObj)

3. 在其他组件内使用

Vue.component("my-button", {
      data() {
        return {
          wrapperStyle: {
            width: "70px",
            padding: "20px",
            backgroundColor: "green"
          },
          textStyle: {
            color: "#fff",
            fontSize: "16px"
          }
        }
      },
      methods: {
        handleClick() {
          this.$toast({
            message: "我点击了"
          })
        }
      },
      template: `<div :style="wrapperStyle" @click="handleClick">
                  <span :style="textStyle">点击提示</span>
                </div>`
    })

    const vm = new Vue({
      el: "#app"
    })
  </script>
</body>
</html>

到此,相信大家对“Vue如何封装全局toast组件”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Vue如何封装全局toast组件

本文链接: https://lsjlt.com/news/95911.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Vue如何封装全局toast组件
    本篇内容主要讲解“Vue如何封装全局toast组件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue如何封装全局toast组件”吧!一. 借助 vue-cli...
    99+
    2024-04-02
  • 怎么用Vue封装全局toast组件
    本篇内容介绍了“怎么用Vue封装全局toast组件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一. 借助...
    99+
    2024-04-02
  • Vue封装全局toast组件的应用
    这篇文章主要介绍“Vue封装全局toast组件的应用”,在日常操作中,相信很多人在Vue封装全局toast组件的应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue封装全局toast组件的应用”的疑惑有所...
    99+
    2023-06-20
  • Vue封装全局toast组件的完整实例
    目录前言 一. 借助 vue-cli 1. 定义 Toast 组件2. 在 main.js 里面配置3. 在其他组件内使用二、不借助 vue-cli 1. 注册 toast 组件2....
    99+
    2024-04-02
  • Vue如何实现全局的toast组件
    这篇文章主要介绍“Vue如何实现全局的toast组件”,在日常操作中,相信很多人在Vue如何实现全局的toast组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue如何实现全局的toast组件”的疑惑有所...
    99+
    2023-07-05
  • vue extend+promise封装全局弹窗组件
    本文实例为大家分享了vue extend+promise封装全局弹窗组件的具体代码,供大家参考,具体内容如下 因为项目没有引入第三方UI库,所以所有的公共组件都需要自己封装现在需要一...
    99+
    2024-04-02
  • Vue实现全局的toast组件方式
    目录Vue全局的toast组件1.创建toast组件2.创建toast.js文件3.安装并使用 vue自定义toast组件使用总结Vue全局的toast组件 1.创建toa...
    99+
    2023-03-06
    Vue全局的toast组件 Vue全局 Vue toast组件
  • vue 为什么要封装全局组件引入
    目录1.为什么要封装全局组件引入2. 封装全局组件的 js3. 在 main.js 中4. 我们要引入这些公共组件就可以直接用啦1.为什么要封装全局组件引入 为何要封装一个封装全局组...
    99+
    2024-04-02
  • vue组件如何封装
    封装vue组件的方法:1.新建vue.js项目;2.使用Vue.extend()方法创建组件;3.使用Vue.component()方法注册组件;4.构建组件变量;5.使用组件名称标签调用组件;具体步骤如下:首先,在vue-cli中创建一个...
    99+
    2024-04-02
  • vue使用Vue.extend创建全局toast组件实例
    目录Vue.extend创建全局toast组件关于vue.extend的理解应用基本概念官网基本示例应用总结Vue.extend创建全局toast组件 src -> compo...
    99+
    2023-03-06
    vue使用Vue.extend Vue.extend创建全局 Vue.extend toast组件
  • vue怎么使用Vue.extend创建全局toast组件
    本篇内容主要讲解“vue怎么使用Vue.extend创建全局toast组件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue怎么使用Vue.extend创建全局toast组件”吧!Vue.ex...
    99+
    2023-07-05
  • vue如何封装TabBar组件
    这篇文章主要为大家展示了“vue如何封装TabBar组件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue如何封装TabBar组件”这篇文章吧。实现思路:步骤一:TabBar和TabBarIt...
    99+
    2023-06-25
  • vue中使用svg封装全局消息提示组件
    本文实例为大家分享了vue中使用svg封装全局消息提示组件的具体代码,供大家参考,具体内容如下 先看效果图 一、首先安装下载需要用到的svg相关依赖 npm install sv...
    99+
    2024-04-02
  • 如何封装vue日历组件
    这篇文章将为大家详细讲解有关如何封装vue日历组件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下图示封装的组件的代码如下<template>  <div&...
    99+
    2023-06-29
  • Vue分页组件如何封装
    今天小编给大家分享一下Vue分页组件如何封装的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。效果如图话不多说,直接上代码<...
    99+
    2023-07-02
  • Vue中如何使用全局组件和局部组件
    Vue中如何使用全局组件和局部组件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。组件 (Component) 是 Vue.js...
    99+
    2024-04-02
  • vue-antd form组件封装全过程
    目录表单项–公用组件(vue-antd)1、废话不多说,先看具体效果2、组件代码如下3、在相应地方进行引入总结表单项–公用组件(vue-antd) 1、废话不...
    99+
    2023-05-17
    vue-antd form组件封装 form组件封装 vue-antd form组件
  • Vue中怎么封装一个自动化注册全局组件
    这篇文章主要介绍“Vue中怎么封装一个自动化注册全局组件”,在日常操作中,相信很多人在Vue中怎么封装一个自动化注册全局组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue中怎么封装一个自动化注册全局组件...
    99+
    2023-06-25
  • vue中怎么使用svg封装全局消息提示组件
    本文小编为大家详细介绍“vue中怎么使用svg封装全局消息提示组件”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue中怎么使用svg封装全局消息提示组件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。先看效果图...
    99+
    2023-06-30
  • 如何使用vue组件封装共用的组件
    这篇文章主要介绍了如何使用vue组件封装共用的组件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用vue组件封装共用的组件文章都会有所收获,下面我们一起来看看吧。这里提供两种vue封装共用组件的方法方法一...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作