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)
    }
    
 }
相关推荐
jump_jump12 分钟前
SaaS 时代已死,SaaS 时代已来
前端·后端·架构
Yanni4Night33 分钟前
Parcel 作者:如何用静态Hermes把JavaScript编译成C语言
前端·javascript·rust
hellokatewj34 分钟前
前端 Promise 全解:从原理到面试
前端
天意pt43 分钟前
Blog-SSR 系统操作手册(v1.0.0)
前端·vue.js·redis·mysql·docker·node.js·express
遗憾随她而去.1 小时前
Webpack5 高级篇(一)
前端
遇见~未来1 小时前
JavaScript构造函数与Class终极指南
开发语言·javascript·原型模式
清风ai明月1 小时前
在vue3中Promise是什么
vue.js
疯狂踩坑人1 小时前
【React 19 尝鲜】第一篇:use和useActionState
前端·react.js
毕设源码-邱学长1 小时前
【开题答辩全过程】以 基于VUE的打车系统的设计与实现为例,包含答辩的问题和答案
前端·javascript·vue.js
用户39051332192881 小时前
JS判断空值只知道“||”?不如来试试这个操作符
前端·javascript