工作中遇到的bug

406 阅读1分钟

1点击form 表单中的button导致页面刷新问题

原因分析:

在form表单里的button,不给button添加type属性,点击按钮,button的类型会默认为submit,会默认提交表单并刷新页面。

将input或者button的type属性改为button,点击按钮页面就不会自动重新加载了。

2nextTick

Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新。nextTick 是在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后使用 $nextTick,则可以在回调中获取更新后的 DOM

3/deep/ 深度选择器。

vue组件中,在style设置为scoped的时候,里面在写样式对子组件是不生效的,如果想让某些样式对所以子组件都生效,可以使用 /deep/ 深度选择器。

4vue中的.native修饰符

  1. 给vue组件绑定事件时候,必须加上native,否则会认为监听的是来自Item组件自定义的事件。

例子:如果使用router-link标签,加上@click事件,绑定的事件会无效因为:router-link的作用是单纯的路由跳转,会阻止click事件,你可以试试只用click不用native,事件是不会触发的。此时加上.native,才会触发事件。

  1. 等同于在子组件中:子组件内部处理click事件然后向外发送click事件:$emit("click".fn)

5短路运算

  • 逻辑运算符 &&(短路与)
    只要碰到了false或者等价于false的就短路,只要短路了就不会继续往后执行了。如果短路了,得到造成短路的这个值,如果不短路,得到的是第二个值
console.log( true && true ); // true
console.log( 123 && '中国'); // 中国
console.log( false && true ); // false
console.log( true && false); // false
console.log(1 && 0); // 0
console.log( undefined && 0); // undefined 
console.log(null && 1); // null
  • 逻辑运算符 || (短路或)
    只要碰到了true或者等价于true的就短路,只要短路了就不会继续往后执行了。如果短路了,得到造成短路的这个值,如果不短路,得到的是第二个值
console.log( true || true ); // true
console.log( 123 || '中国'); // 123
console.log( false || true ); // true
console.log( true || false); // true
console.log(1 || 0); // 1
console.log( undefined || 0); // 0 
console.log(null || 1); // 1

6eval()

eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

eval("x=10;y=20;document.write(x*y)")//输出200

js字符串有length属性

'1234'.length//输出为4

7按钮点击一秒延迟

Vue.directive('preventReClick', { inserted(el, binding) { el.addEventListener('click', () => { if (!el.disabled) { el.disabled = true setTimeout(() => { el.disabled = false }, 1000) } }) } })