个人博客 个人博客
首页
  • 前端
  • 后端
  • Git
  • Docker
  • 网络
  • 操作系统
工具
阅读
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

董先亮

前端react开发
首页
  • 前端
  • 后端
  • Git
  • Docker
  • 网络
  • 操作系统
工具
阅读
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Vue

    • 响应式API
    • vite环境变量
    • 侦听
      • Vue3
        • 侦听
        • 监听一个ref
        • 监听多个ref
        • 深度侦听
    • 样式
    • 多环境配置
    • 实现页面缓存
    • 组件封装
    • nextTick
    • 组件传值
    • 批量导入
    • 插槽
    • scoped与deep原理
    • v-model
    • vue-router
    • 项目全局
    • 自定义hook
  • React

  • 前端框架
  • Vue
NeverStop1024
2022-06-15
目录

侦听

# Vue3

# 侦听

vue官方参考 (opens new window)

# 监听一个ref

setup() {
    const number = ref(0)
    
    // 监听 number 变量,如果有发生变化,自动运行后面的回调函数(number新值,number旧值)
    watch(number, (newVal, oldVal) => {
      console.log({ newVal, oldVal })
    })
    return { number }
  }
1
2
3
4
5
6
7
8
9

# 监听多个ref

import { ref, watch } from 'vue'
setup() {
    const number = ref(0)
    const msg = ref('你好')
    
    // number、msg任意一个ref改变就会触发
    watch([number, msg], (newVal, oldVal) => {
      console.log({ newVal, oldVal })
    })
    return { number, msg }
  }
1
2
3
4
5
6
7
8
9
10
11

# 深度侦听

想侦听state多个值的话,不如开启deep,深度侦听后,state所有层次字段都能被侦听到。

import { ref, watch } from 'vue'
setup() {
  const state = reactive({
    id: 1,
    attributes: {
      name: '',
    }
  })

  // 未开启deep
  watch(
    () => state,
    (state, prevState) => {
      console.log('not deep', state.attributes.name, prevState.attributes.name)
    }
  )
  
  // 开启deep
  watch(
    () => state,
    (state, prevState) => {
      console.log('deep', state.attributes.name, prevState.attributes.name)
    },
    { deep: true }
  )
  return { ...toRefs(state) }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
编辑 (opens new window)
上次更新: 2022/06/17
vite环境变量
样式

← vite环境变量 样式→

最近更新
01
mock使用
07-12
02
websocket即时通讯
07-12
03
前端面试题
07-09
更多文章>
Theme by Vdoing | Copyright © 2022-2023 NeverStop1024 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式