onRenderTracked() 状态跟踪是什么?
是一个状态跟踪,他会跟踪页面上所有的方法跟变量,也就是对我们return返回的属性和方法进行跟踪
作用
当页面有一个update的时候,会生成一个event对象,通过event对象查看代码/程序的问题所在
演示代码
<template> <div class="life"> {{ num }} <button @click="addNum">加1</button> </div> </template> <script lang="ts"> import { defineComponent, reactive, toRefs, onRenderTracked, } from "vue"; export default defineComponent({ name: "Life", components: {}, setup() { const data = reactive({ num: 1, addNum: () => { data.num++; }, }); onRenderTracked((event) => { console.log(event); }); const refData = toRefs(data); return { ...refData, }; }, }); </script> <style lang="scss"> .life { margin-top: 40px; } </style>
总结:刷新浏览器后,浏览器打印出就可以看到属性key,对应的就是num这个属性名
onRenderTriggered() 状态触发是什么?
状态触发,他不会跟踪每一个值,而是跟踪发生变化值得信息,并且新值和旧值都会给你展示出来
作用
可以展示变化值的信息,old和new的值
代码演示
<template> <div class="life"> {{ num }} <button @click="addNum">加1</button> </div> </template> <script lang="ts"> import { defineComponent, reactive, toRefs, onRenderTriggered, } from "vue"; export default defineComponent({ name: "Life", components: {}, setup() { const data = reactive({ num: 1, addNum: () => { data.num++; }, }); onRenderTriggered((event) => { console.log(event); }); const refData = toRefs(data); return { ...refData, }; }, }); </script> <style lang="scss"> .life { margin-top: 40px; } </style>
key:那边变量发生了变化
newValue:更新后的变量
oldValue:更新前的变量
target:目前页面中的响应变量或函数
get:依赖收集
set:依赖更新