5月前端开发日记整理

简介: 5月前端开发日记整理

前言:


由于最近开发的项目基于vue,所以本文是基于vue的

1.阻止鼠标右键事件


mounted () {
    let that = this
    // 注意 取消默认行为 我们鼠标右键的时候 一般是弹出 浏览器的 属性 刷新等等的那个菜单
    // 阻止默认行为 就没有那个菜单出来了
    document.addEventListener('contextmenu', function (e) {
      e.preventDefault()
      that.anQuanSeach()
      console.log("^^^…………………………大大大")
    })
  },

2.bug: 表单编辑时输入无效


做表单时点击编辑页,发现无法对input框内的数据修改(有时也会很正常,但后患无穷),控制台警告如下

关键词:violation

image.png

使用解决办法:

1. (1)npm i default-passive-events -S 
2. (2)main.js中加入:import ‘default-passive-events’

成功解决后

然而,我项目中有使用拖拽连线组件jsplumb,发现连线报错。

image.png

最终解决方法为:将default-passive-events放到表

单组件中引入而不是全局引入  

import './default-passive-events/dist/index'//解决控制台警告……

image.png

3.显示/隐藏密码功能+小眼睛效果


  //模板                  <el-input
                      :type="passwordType"
                      v-model="dialogEdieot.password"
                      autocomplete="off"
                    ></el-input>
                    <span class="show-pwd" @click="showPwd">
                      <svg-icon
                        :icon-class="
                          passwordType === 'password' ? 'eye' : 'eye-open'
                        "
                      />
                    </span>
data:
passwordType: 'password',
method:
   showPwd () {
      if (this.passwordType === 'password') {
        this.passwordType = ''
      } else {
        this.passwordType = 'password'
      }
    },
css:
   .show-pwd {
  position: absolute;
  right: 0.2084rem;
  top: -0.0052rem;
  font-size: 0.0833rem;
  color: #7c7c7e;
  opacity: 0.5;
  cursor: pointer;
  user-select: none;
}

4.当表单必填项没填时提交按钮不可点击且置灰


思路是:

使用watch监听表单数据(v-model绑定的)来动态控制按钮的disabled属性

注意:下面watch是监听的对象,使用的深度监听

 watch: {
    dialogEdieot: {
      handler (newValue, oldValue) {
        // 如果点击提交按钮必填项为空按钮不可点击且灰色
        if (newValue.ip && newValue.name ) {
          this.isTiJiao = false //当IP和name无变化时按钮为可点击
        } else {
          this.isTiJiao = true//当IP和name无变化时按钮为不可点击
        }
      },
      deep: true,
    }
  },

5.屡试不爽的神技-刷新页面


工作中使用比较多,简单暴力可以避免很多很多坑点,还有一个有点,用户体验度比较好

在你的app.vue页面内(如果你的根组件不叫这个,那就找你的路由出口)

按照以下方式设置:

<template>
  <div id="app">
    <router-view v-if="isRouterAlive" />
  </div>
</template>
<script>
export default {
  name: 'App',
  provide () {
    return {
      reload: this.reload
    }
  },
  data () {
    return {
      isRouterAlive: true
    }
  },
  methods: {
    reload () {
      this.isRouterAlive = false
      this.$nextTick(function () {
        this.isRouterAlive = true
      })
    }
  }
}
</script>

然后就可以在任意一个组件内这样使用:

1. inject: ['reload'],
2.   data () {
3. return {}
4.   },

6.ElementUI表单验证注意事项


其实就三步,这个不多说。

问题:表单验证只有在错误的时候才会提示,且一直卡在错误提示处,这是因为定义的规则那里没有对正确的情况下写callback()

 data () {
    var checkIp = (rule, value, callback) => {
      if (!value) {
        return callback(new Error('ip不能为空'))
      }
      let vulue2 = "" + value
      let values = vulue2.replace(/\s+/g, "")
      var pattern = /^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$/
      if (pattern.test(values)) {
        callback()
      } else {
        callback(new Error('非法ip地址!')) //ip地址输入有误
      }
    }
    return {}

7.ElementUI最大输入和最小输入及清空图标


maxlength="30" //最多输入30个字符

minlength="30" //最小输入30个字符
clearable //显示清空按钮

                    <el-input
                    maxlength="30" //最多输入30个字符
                    clearable //显示清空按钮
                    placeholder="请输入1-30个字符"
                    v-model="dialogEdieot.ip"
                    autocomplete="off"
                  />

8.数组累计问题


场景:

比如点击详情页本来数据是三条,再点其他数据累加了,大概率是数组push()的原因,先清空数组再装数据就好了。

image.png


相关文章
|
网络协议 Android开发 Python
Android 抓包工具r0capture使用
Android 抓包工具r0capture使用
1857 1
|
JavaScript 前端开发 API
vue element plus Cascader 级联选择器
vue element plus Cascader 级联选择器
1596 0
|
关系型数据库 MySQL Java
centos7安装mysql教程及Navicat平替软件
【8月更文挑战第17天】本教程详述CentOS 7上安装MySQL的过程。首先确保移除任何预装的MySQL组件,然后通过wget获取并安装MySQL的YUM源。可以选择安装特定版本如5.7或8.0。安装MySQL服务器后,启动服务并查找初始密码。登录MySQL后应立即更改密码,并可根据需要设置远程访问权限。此外,还推荐使用免费开源的DBeaver作为数据库管理工具,提供了安装步骤以方便管理和操作MySQL数据库。
449 3
|
NoSQL Java API
分布式锁的实现原理与应用场景,5 分钟彻底搞懂!
本文详细解析了分布式锁的实现原理与应用场景,包括线程锁、进程锁和分布式锁的区别,以及分布式锁的四种要求和三种实现方式(数据库乐观锁、ZooKeeper、Redis)。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
分布式锁的实现原理与应用场景,5 分钟彻底搞懂!
|
机器学习/深度学习 计算机视觉
CNN全连接层是什么东东?
CNN全连接层是什么东东?
762 4
|
机器学习/深度学习 编解码 算法
万字长文解读图像超分辨率 Real-ESRGAN 论文笔记+代码阅读
万字长文解读图像超分辨率 Real-ESRGAN 论文笔记+代码阅读
2526 3
|
SQL 设计模式 算法
软件体系结构 - 架构风格(8)解释器架构风格
【4月更文挑战第21天】软件体系结构 - 架构风格(8)解释器架构风格
1987 0
|
网络架构 Windows
什么是Mac地址
什么是Mac地址
【Vue2.0学习】— v-html指令(四十六)
【Vue2.0学习】— v-html指令(四十六)