VUE项目中使用mint-ui框架总结

针对PC端,element-ui可谓是首选了,UI体验效果很好。

element-ui 框架官网: http://element.eleme.io/#/zh-CN/component/installation

mint-ui 也是饿了么出品的UI框架(主要是针对移动端),其框架官网: http://mint-ui.github.io/docs/#/en2/quickstart

针对移动端项目,有些为了偷工减料,可以选择性的利用现成的UI框架。但是用了之后遇到了一些坑。

1.按需加载:按需引入的方式,我们不必要引入全部的UI组件,需要用什么就选择性的用什么,这样可以减小我们项目的体积,加快加载速度。

但是按照官网提示来操作,发现会报错。

正确的做法是:

修改 .babelrc文件配置

主要是 在 plugins 后添加

["component", [
      {
        "libraryName": "mint-ui",
        "style": true
      }
]]

完整的 .babelrc文件代码为:

{
  "presets": [
    ["env", {
      "modules": false,
      "targets": {
        "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
      }
    }],
    "stage-2"
  ],
  "plugins": [
    "transform-vue-jsx",
    "transform-runtime",
    ["component", [
      {
        "libraryName": "mint-ui",
        "style": true
      }
    ]]
  ],
}

在入口文件引入需要用到的UI组件

import {
  DatetimePicker,
  Toast,
  Indicator,
  Picker,
  Popup
} from 'mint-ui'
Vue.component(DatetimePicker.name, DatetimePicker)
Vue.component(Toast)
Vue.component(Indicator)
Vue.component(Picker.name, Picker)
Vue.component(Popup.name, Popup);

比如现在我只需要用mint-ui 框架中的 DatetimePicker , Toast , Indicator , Picker , Popup

这样就可以全局引入这些UI组件了。

官网提示说 

Vue.component(Button.name, Button)
Vue.component(Cell.name, Cell)
/* 或写为
 * Vue.use(Button)
 * Vue.use(Cell)
 */

但是发现写成  Vue.use(Toast)  在页面初始化时会出现一个小黑点后消失,其实这是Toast样式里面的padding 起的作用。也就是  Vue.use(Toast)   会在页面加载时初始化。

所以为了避免出现这个问题,采用 Vue.component 引入方式比较好。

2.使用了Toast 或者 Indicator等组件时,按照官方文档,这样写就会出现“Uncaught ReferenceError: Toast is not defined”的错误

错误截图为

Toast 被当做是未知的变量,

此时的做法是 引入了Toast 就需要把该变量暴露到全局对象里面

window.Toast= Toast
window.Indicator= Indicator
...

3.Toast等组件避免重复弹出,按需关闭

比如 在做表单验证时,表单输入不能为空,一直点 提交按钮,会一直出现Toast 组件,而这时之前的Toast并没有完全消息,这里前端处理的时候需要设置下标记,判断Toast是否存在

另外 有这样的需求,比如在 登录页面,用户提交表单后,登录成功,会跳转到新的页面。而这时 Toast需要过2秒才消失,在进入另外一个页面我们会发现 此时的Toast 仍然存在。

此时的做法是:

var toastFlag = ''

//把Toast赋值给一个新的变量
toastFlag = Toast("登陆成功")

//beforeDestroy生命周期关闭Toast
beforeDestroy:function(){
    toastFlag && toastFlag.close()
}

4. 引入 Datetime picker 组件,时间选择数据少,当前时间的10年前和未来的10年

但是某些项目中,需要更多选择年份的需求。该插件提供了 startDate  和 endDate 属性

:startDate="new Date('1970/12/31 12:00:00')"
:endDate="new Date('2100/12/31 12:00:00')"

上面例子 意思是选择 1970 ~ 2100 年份的数据

原文地址:https://www.cnblogs.com/zuobaiquan01/p/10093893.html