的两个变量用ref定义基本数据类型的响应变量,用reactive定义数组或对象类型的响应变量,都是响应式constcount=ref(0)constobj=reactive({count:0})Vue3使用reactive来包装不能直接赋值的数组和对象,否则会失去响应能力。要使用“响应式值引用”,不要使用普通的基本类型值和对象,否则容易失去响应性。比如constarry1=reactive([1])在js中直接赋值,会失去响应性:arry1=[1,2,3]//arry1=[1]可以定义为constdata=reactive({arry1:[1]})usedata.arry1=[1,2,3]injs//arry1=[1,2,3]2.创建的响应式变量不能解构或展开,否则变量会丢失响应式效果,可以使用toRefsAPI,父组件传过来的响应式props同样不能解构和展开,比如constbook=reactive({author:'VueTeam',year:'2020',title:'Vue3Guide'})let{author,title}=toRefs(book)title.value='Vue3DetailedGuide'//我们需要使用.valueasThetitlenowrefconsole.log(book.title)//'Vue3详解'并且不能这样解构let{author,title}=book不能使用expansion:...book总结一下,总共有两个变量Style:区分使用ref和反应式就像你会区分声明原始纯JavaScript中的变量和对象变量。到处使用反应式,并记住在组合函数返回反应式对象时使用toRefs。这减少了ref周围的一些精神负担
