小QA学习前端系列之vue计算属性和观察者
对于任何复杂逻辑,你都应当使用计算属性
我可以在模板放入逻辑
也可以用$watch来计算逻辑
通常情况下,使用计算属性会比使用过程式的$watch回调更合适
是不是代码量少多了,开心吧
但要记住计算属性是基于它们的依赖进行缓存的,而直接在vue的method中每当触发重新渲染时,调用方法将总会再次执行函数。
如果你不想使用缓存 也可以 只需要cache关闭开关就好
计算属性的 setter
计算属性默认只有 getter ,不过在需要时你也可以提供一个 setter :
现在再运行 vm.fullName = ‘John Doe’ 时,setter 会被调用,vm.firstName 和 vm.lastName 也会相应地被更新。
侦听器
那什么时候用watch
虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器。这就是为什么 Vue 通过 watch 选项提供了一个更通用的方法,来响应数据的变化。当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。
例如:
|
|
结果:
Ask a yes/no question:
I cannot give you an answer until you ask a question!
在这个示例中,使用 watch 选项允许我们执行异步操作 (访问一个 API),限制我们执行该操作的频率,并在我们得到最终结果前,设置中间状态。这些都是计算属性无法做到的。
除了 watch 选项之外,您还可以使用命令式的 vm.$watch API。