原始字符串: {{ message }}
反转字符串: {{ reversedMessage }}
在浏览器中的显示效果如图531所示。
图531computed()方法
5. watch()方法
watch()方法等同于Vue 2的this.$watch()方法,以及相应的watch选项。watch()方法需要监听特定的数据源,并在单独的回调函数中应用副作用。在默认情况下,它也是惰性的,即只有当被监听的数据源发生变化时,才会调用回调函数。
与watchEffect()方法相比,watch方法有以下功能:
(1) 惰性地执行副作用。
(2) 更具体地说明什么状态应该触发监听器重新运行。
(3) 访问被监听状态的前一个值和当前值。
watch()方法与watchEffect()方法共享行为,包括手动停止、副作用失效(将onInvalidate作为第3个参数传递给回调)、刷新时间和调试。
监听的数据源可以是返回值的getter函数,也可以是直接的ref对象。示例代码如下:
const state = reactive({ count:0 })
//监听返回值的getter函数
watch(
() => state.count,
(count,prevCount) => {
...
}
)
const count = ref(0)
//直接监听一个ref对象
watch(count,(count,prevCount) => {...})
5.10综合案例
组件添加好后,通过单击“发表评论”按钮来将内容添加到评论列表中,如例529所示。实现的逻辑如下:
(1) 通过单击“发表评论”按钮触发单击事件调用组件中methods中定义的方法。
(2) 在methods中定义的方法中将保存的localStorage中的列表数据加载到list中。
(3) 将录入的信息添加到list中,然后将数据保存到localStorage中。
(4) 调用父组件中的方法来刷新列表数据。
【例529】综合案例
//第5章/综合案例.html