vue3中的computed和watch

computed 计算属性功能和vue2一样,可以缓存得到的结果,只有当依赖的数据发生变化后才会重新触发的逻辑,计算属性的值可以是一个函数也可以是一个对象

<script setup>

import { computed, ref } from 'vue'

const msg = ref('world')

const formate = computed(() => {

  return 'hello ' + msg.value

})

formate.value = 'hello roles' //计算属性是一个只读属性 不能进行更改

const changeMsg = () => {

  msg.value = 'vue3'

}

// 计算属性的值可以是一个函数也可以是一个对象

let str = ref('')

const formate = computed({

  set(val) {

    str.value = val

  },

  get() {

    return str

  }

})

// 当我们给一个计算属性赋值的时候会出发该属性的set方法 set方法得到的参数就是赋的值

const changeMsg = () => {

  formate.value = 'hello vue3'

}

</script>


watch:计算结果不会缓存,监听数据的变化会触发执行函数

<script setup>

import { watch, ref, reactive } from 'vue'

// const num = ref(0)

// 第一个参数是要监听变化的数据 第二个是数据变化后出发的回调函数 第三个是配置项

watch(num, (newVal, oldVal) => {

  console.log(newVal, oldVal)

 })

const state = reactive({

  num: 1,

  obj: {

    name: 'zhangsan',

    age: 16

  }

})

// 这种情况下我们第一个参数需要使用一个函数返回需要监听的数据

watch(() => state.obj, (newVal, oldVal) => {

  console.log(newVal, oldVal)

}, {

  deep: true, // 开启深度监听

  immediate: true // 值如果是true会打开首次监听

})

</script>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容