Vue3中ref和reactive的使用

今天在项目中使用reactive过程中出现变量无法更新视图,reactive通常用于对象

javascript 复制代码
<template>
    <div class="wrapper">
        <el-checkbox :indeterminate="isInderterminate" v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox>
        <el-checkbox-group v-model="checkedCities">
            <el-checkbox v-for="(city,index) in cities" :key="index" :label="city" @click="">{{city}}</el-checkbox>
        </el-checkbox-group>
    </div>
</template>
<script lang="ts" src="./insight-4d-test.ts"></script>
<style lang="scss" scoped src="./insight-4d-test.scss"></style>
javascript 复制代码
import { defineComponent, onMounted, ref, reactive,getCurrentInstance } from "@vue/composition-api"
export default defineComponent({
    setup(props, { root }) {
        const instance: any = getCurrentInstance();
        const checkAll:boolean=ref(false);
        // var checkedCities:string[] = reactive([]);
        var checkedCities = ref<string[]>([]);
        const cities: string[] = reactive(['北京', '上海','广州','深圳']);
        
        const handleCheckAllChange=(val:boolean)=>{
            checkedCities.value=val?cities:[]
        }
        return{
            checkAll,
            checkedCities,
            cities,
            handleCheckAllChange
        }
    }
})

注意ref声明的变量必须用.value赋值实现响应式。

如果是reactive声明的话,需要用forEach去逐个处理,直接复制并不能响应式处理

javascript 复制代码
 const cities: string[] = reactive(['北京', '上海','广州','深圳']);
 const checkedCities:string[]=reactive([])    
 const handleCheckAllChange=(val:boolean)=>{
    if(val){
        cities.forEach(item=>{
           checkedCities.push(item)
       })
    }else{
        checkedCities.splice(0)
    }
    
 }
相关推荐
Mintopia1 分钟前
一个月速成 AI 工程师:从代码小白到智能工匠的修炼手册
前端·javascript·aigc
Mintopia5 分钟前
Next.js 全栈:接收和处理请求
前端·javascript·next.js
袁煦丞38 分钟前
2025.8.18实验室【代码跑酷指南】Jupyter Notebook程序员的魔法本:cpolar内网穿透实验室第622个成功挑战
前端·程序员·远程工作
Joker Zxc43 分钟前
【前端基础】flex布局中使用`justify-content`后,最后一行的布局问题
前端·css
无奈何杨1 小时前
风控系统事件分析中心,关联关系、排行、时间分布
前端·后端
Moment1 小时前
nginx 如何配置防止慢速攻击 🤔🤔🤔
前端·后端·nginx
晓得迷路了1 小时前
栗子前端技术周刊第 94 期 - React Native 0.81、jQuery 4.0.0 RC1、Bun v1.2.20...
前端·javascript·react.js
江城开朗的豌豆1 小时前
React Native 实战心得
javascript
前端小巷子1 小时前
Vue 自定义指令
前端·vue.js·面试