拜读 vue 官方文档
1、不要在生命周期函数上使用箭函数
1 | created: () => console.log(this.a); |
因为箭头函数并没有 this,this 会作为变量一直向上级词法作用域查找,直至找到为止,经常导致 Uncaught TypeError: Cannot read property of undefined 或 Uncaught TypeError: this.myMethod is not a function 之类的错误。
2、v-show 不支持 template 元素,也不支持 v-else。
3、当 v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级。
4、使用修饰符时,顺序很重要(从左到右)
- v-on:click.prevent.self 会阻止所有的点击,
- v-on:click.self.prevent 只会阻止对元素自身的点击。
5、当一个 ViewModel 被销毁时,所有的事件处理器都会自动被删除。你无须担心如何清理它们。
6、prop 会在一个组件实例创建之前进行验证
所以实例的 property (如 data、computed 等) 在 default 或 validator 函数中是不可用的。
7、.sync 修饰符的 v-bind 不能和表达式一起使用
- 例如 v-bind:title.sync=”doc.title + ‘!’” 是无效的。
- 当我们用一个对象同时设置多个 prop 的时候,也可以将这个 .sync 修饰符和 v-bind 配合使用:
1 | <text-document v-bind.sync="doc"></text-document> |
将 v-bind.sync 用在一个字面量的对象上,例如 v-bind.sync=”{ title: doc.title }”,是无法正常工作的,因为在解析一个像这样的复杂表达式的时候,有很多边缘情况需要考虑。
8、注意这个 keep-alive 要求被切换到的组件都有自己的名字,不论是通过组件的 name 选项还是局部/全局注册。
9、refs 只会在组件渲染完成之后生效,并且它们不是响应式的。这仅作为一个用于直接操作子组件的“逃生舱”——你应该避免在模板或计算属性中访问 $refs。
10、mixin 混入
- 数据对象在内部会进行递归合并,并在发生冲突时以组件数据优先。
- 同名钩子函数将合并为一个数组,因此都将被调用。另外,混入对象的钩子将在组件自身钩子之前调用。
- Vue.extend() 也使用同样的策略进行合并。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿乐去买菜!
评论