菜鸟遇到vue小坑
其实菜鸟说的就是我,哈哈:) 一边自学一边收录一些遇到的坑,无论大小都写下来分享给大家。
1 template里面的元素必须以一个根元素包裹,否则只会显示第一个元素。
2 v-on:事件名和v-bind属性名 会自动转为小写。2019-08-16更新:由于看到V2.6.0新增的动态参数便明白了,其实这些都是DOM属性,因此可以理解不能大写和特殊字符规定的含义。
3 实例化Vue的data是对象,组件的data是函数返回对象。
//实例 new Vue({ data:{ ... } }); //组件 Vue.component({ data(){ return { ... } } })
4 不要在选项属性或回调上使用箭头函数。
let vm = new Vue({ created()=>{ //Uncaught TypeError: Cannot read property of undefined 或 Uncaught TypeError: this.myMethod is not a function 。 } }) or vm.$watch('a', newValue => this.myMethod())。// Uncaught TypeError: Cannot read property of undefined 或 Uncaught TypeError: this.myMethod is not a function。
因为箭头函数并没有 this,this 会作为变量一直向上级词法作用域查找,直至找到为止。
5 Mustache表达式虽然支持js语法,但只能是单个的表达式,包括流控制和语句无效
<!-- 这是语句,不是表达式 --> {{ var a = 1 }} <!-- 流控制也不会生效,请使用三元表达式 --> {{ if (ok) { return message } }}
2019-08-16更新
6 如果某种开发情况下把组件和VUE实例写到一个JS文件下时,组件代码请放在实例上面。
修改第2条!
7 计算属性和一般方法之间的区别和使用不太明确。
//方法 methods: { ... 模板中使用安装一般函数使用 ... 依赖渲染,所以只要需要VDOM需要重新渲染,该方法就需要重新执行 } //计算属性 computed: { ... 模板中使用不能加括号 ... 依赖属性,所以每次只有当该属性发生变化是执行 }
补充中~~~