在vue3中一般返回的数据是不响应的,如果需要响应式需要在定义时声明
方法1:reactive():
        定义:reactive()是一个函数,可以用来定义复杂数据类型完成响应式
        案例:
                

<div>{{userInfo.name}}</div>
//4,结果打印Cat
<button @click="userNameUpdate"><button>
<script lang='setup'>
//1,引用reactive
import {reactive} from 'vue'
//2,定义响应式对象
const userInfo = reactive({
    name:''
})
//3,点击改变响应式对象中name的值
const userNameUpdate = ()=>{
    userInfo.name = "Cat"
}
</script>

方法2:toRef():
        定义:当我们在渲染数据时,不希望用到前缀时,可以使用组合toRef()
             toRef()是函数,转换响应式对象中的某个属性为单独响应式数据,他们之间依然相互绑定
        案例:
        

<div>{{name}}</div>
//先打印Vue2
<button @click='nameUpdata'>修改</button>
//点击后打印Vue3
<script lang='setup'>
//1,引用reactive,toRef
import {reactive,toRef} from 'vue'
//2,定义响应式对象
const userInfo = reactive({
    name:'Vue2'
})
//3,定义单独响应式变量
const name = toRef(userInfo,'name')
//4,点击修改name值
const nameUpdata = ()=>{
    name.value = 'Vue3'
}
</script>

方法3:toRefs():
        定义:可以定义转换响应式对象中所有属性为响应式数据,通常用于结构reactive定义的对象,转换响应式对象中所有属性(也可以是一部分)为单独响应式数据,对象成为普通对象,且数据关联
        案例:

        

<div>姓名:{{name}}</div>
<div>年龄:{{age}}</div>
<button @click = 'upData'>修改信息</button>
<script lang='setup'>
//1,引用reactive、toRefs
import {reactive,toRefs} from 'vue'
//2,定义响应式对象
const userInfo = reactive({
    name:'张三',
    age:'23'
})
//3,定义转换单独响应式数据
const {name,age} =toRefs(userInfo)
//4,修改数据事件
const upData = () =>{
    name.value = '李四'
    age.value = '24'
} 
</script>

方法4:ref():
        定义:ref()是一个函数,用来定义简单类型数据响应式
        注意:
                1)在修改值和获取值时需要用.value
                2)在渲染数据时可以省略.value
        案例:
                

<div>{{name}}</div>
<button @click="upData">修改</button>
<script lang='setup'>
//1,引用ref
import {ref} from 'vue'
//2,定义响应式变量
const name = ref('vue2')
//3,修改数据事件
const upData = ()=>{
    name.value = 'vue3'
    conslot.log(name.value)
}
</script>

ref也可以用于对象或数组

Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐