| <template> |
| <div id="app"> |
| <nav> |
| <p>vue2与vue3侦听器的区别</p> |
| <p>当前数值是: {{count}}</p> |
| <button @click="count++">点击++</button> |
| <hr> |
| <p>当前字符串是: {{str}}</p> |
| <button @click="str+='国庆节快乐'">点击改变字 |
| </nav> |
| |
| </div> |
| </template> |
| <script> |
| import { ref, watch } from 'vue' |
| export default { |
| name: 'App', |
| |
| #region vue2侦听器 |
| |
| data() { |
| return { |
| count: 0 |
| } |
| }, |
| watch: { |
| 这是简洁写的版本,vue2的侦听器 |
| count(newVal, oldVal) { |
| console.log('newVal:', newVal, 'oldVal:', ol |
| } |
| 这是完整写法的侦听器 |
| count: { |
| handler(newVal, oldVal) { |
| console.log('newVal:', newVal, 'oldVal:', |
| }, |
| deep: true, |
| immediate: true |
| } |
| }, |
| #endregion |
| |
| |
| setup() { |
| const count = ref(0) |
| const str=ref('hello') |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| watch([count,str], (newVal, oldVal) => { |
| console.log('新值:', newVal, '旧值:', oldVal |
| },{ |
| deep: true, |
| immediate: true |
| }) |
| return {count,str} |
| } |
| |
| } |
| </script> |
| <style> |
| #app { |
| font-family: Avenir, Helvetica, Arial, sans-seri |
| -webkit-font-smoothing: antialiased; |
| -moz-osx-font-smoothing: grayscale; |
| text-align: center; |
| color: #2c3e50; |
| } |
| |
| nav { |
| padding: 30px; |
| } |
| |
| nav a { |
| font-weight: bold; |
| color: #2c3e50; |
| } |
| |
| nav a.router-link-exact-active { |
| color: #42b983; |
| } |
| </style> |
| |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构