vue3如何定义变量及ref、reactive、toRefs特性说明

目录
  • vue3定义变量及ref、reactive、toRefs特性
    • 1.ref() 函数
    • 2.reactive() 函数
    • 3.toRefs() 函数
  • vue3定义变量
    • 1.const 声明变量
    • 2.reactive和ref
    • 3.provide与inject

vue3定义变量及ref、reactive、toRefs特性

1.ref() 函数

ref() 函数用来根据给定的值创建一个响应式的数据对象,传入的为基本数据类型,例如字符串、数字、boolean 等,返回值是一个对象,这个对象上只包含一个 value 属性

ref定义的变量,改变值要.value,而且在template中不用写.value

<div>{{msg}}</div>
<button @click="changeMsg()">修改msg</button>
import {reactive,ref,toRefs} from 'vue'
setup() {
    //定义
    const msg = ref('你好') 
    //修改
    const changeMsg =()=>{
      msg.value ='msg被改了'
    }
    //导出
    return { 
     msg,
     changeMsg
    }
  }

2.reactive() 函数

reactive函数传入的为引用类型,例如数组、对象等,但不能代理基本类型值,返回一个响应式的数据对象, 想要使用创建的响应式数据也很简单,创建出来之后,在setup中return出去,直接在template中调用即可。

<div>{{state.msg}}</div>
<button @click="changeMsg()">修改msg</button>
import { reactive, ref, toRefs } from 'vue'
        setup() {
            //定义
            const state = reactive({
                msg: '你好',
                msg2:'hello'
            })
            //修改
            const changeMsg = () => {
                state.msg = 'msg被改了'
            }
            //导出
            return {
                state,
                changeMsg
            }
        }

3.toRefs() 函数

toRefs() 函数可以将 reactive() 创建出来的响应式对象,转换为普通的对象,相当于变成一个个的ref(),类似使用拓展用算符…的方法返回数据data

使用toRefs和reactive()区别在于可以直接使用msg属性,不用state.

<div>{{msg}}</div>
<button @click="changeMsg()">修改msg</button>
import { reactive, ref, toRefs } from 'vue'
        setup() {
            //定义
            const state = reactive({
                msg: '你好',
                msg2:'hello'
            })
            //修改
            const changeMsg = () => {
                state.msg = 'msg被改了'
            }
            //导出
            return {
               ...toRefs(state),
                changeMsg
            }
        }

vue3定义变量

1.const 声明变量

特性:声明为一个常量,不能被修改,不可以再次赋值,它的指向是不可以改变的,只能指向某处固定区域,不能再指向其它地方

要求:

① 声明后必须初始化赋值,如:const name='aaa',不可以 const name;

② 常量的含义是指向的对象不能修改,但是可以修改对象中的属性

所以类似const userName = ref('张三')

userName.value = '李四'

实际上是在给对象userName的属性重新赋值

2.reactive和ref

都是用作定义基本变量的

ref 定义简单的,reactive一般定义数组和对象

ref 有.value属性,reactive没有

3.provide与inject

不用再一层一层的传递数据

provide可以向所有子孙组件提供数据以及提供修改数据的方法,子孙组件用inject使用数据。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Vue3.0中Ref与Reactive的区别示例详析

    目录 Ref与Reactive Ref Reactive Ref与Reactive的区别 shallowRef 与shallowReactive toRaw ---只修改数据不渲染页面 markRaw --- 不追踪数据 toRef --- 跟数据源关联 不修改UI toRefs ---设置多个toRef属性值 customRef ---自定义一个ref ref 捆绑页面的标签 总结 Ref与Reactive Ref Ref 用来创建基础类型的响应式数据,模板默认调用value显示数据.方法中修

  • Vue3如何理解ref toRef和toRefs的区别

    目录 一.基础 1.ref 2.toRef 3.toRefs 4.最佳的使用方式 二.深入 1.为什么需要ref 2.ref为什么需要.value 3.为什么需要toRef和toRefs Vue3中新增了几种创建响应式数据的方法,其各自的作用当然也不尽相同,每一种方法都有其自己的应用场景,今天我们来聊聊什么是ref toRef和toRefs?三者在使用方式上有什么不同?最佳的使用方式是什么? 一.基础 1.ref (1) 生成值类型的响应式数据, 通过 .value修改值 <template>

  • vue3+ts中ref与reactive指定类型实现示例

    目录 ref 的基础特性 如何在ref中指定类型 reactive isRef.isReactive toRef.toRefs.toRaw ref 的基础特性 ref 约等于 reactive({ value: x }) ref() 可以定义时无参数,第一次赋值任意类型,然后就不能增加属性 const refa = ref(6) const rcta = reactive({ value: 12 }) console.log('refa:', refa) //RefImpl{...} conso

  • vue3的ref,computed,reactive和toRefs你都了解吗

    目录 1.ref 2.computed 3.reactive 4.toRefs 总结 在vue2中,data函数里返回的值直接为响应式的,但在vue3中我们需要使用一些函数才能达到这个效果. setup函数中拿不到vue的this 1.ref 本质为一个函数,输入参数为一个值(原始类型),返回响应式的对象 2.computed 本质为一个函数,输入参数是一个函数,可以将我们需要的值作为输入函数的返回值 例子:实现点击按钮,屏幕上的数加1 <template> <div id='app'&

  • vue3如何定义变量及ref、reactive、toRefs特性说明

    目录 vue3定义变量及ref.reactive.toRefs特性 1.ref() 函数 2.reactive() 函数 3.toRefs() 函数 vue3定义变量 1.const 声明变量 2.reactive和ref 3.provide与inject vue3定义变量及ref.reactive.toRefs特性 1.ref() 函数 ref() 函数用来根据给定的值创建一个响应式的数据对象,传入的为基本数据类型,例如字符串.数字.boolean 等,返回值是一个对象,这个对象上只包含一个

  • Vue3响应式方案及ref reactive的区别详解

    目录 一.前言 二.新的方案 1. 缘由 2. Proxy 和 Reflect 1) Proxy 2) Reflect 3. reactive 1) createReactiveObject() 函数 2) mutableHandlers() 函数 -> 对象类型的 handlers 3) mutableInstrumentations() 函数 -> Map Set等类型的 handlers 4. ref 1) createRef() 2) toReactive() 3)proxyRefs(

  • setup+ref+reactive实现vue3响应式功能

    setup 是用来写组合式 api ,内部的数据和方法需要通过 return 之后,模板才能使用.在之前 vue2 中,data 返回的数据,可以直接进行双向绑定使用,如果我们把 setup 中数据类型直接双向绑定,发现变量并不能实时响应.接下来就看看setup如何实现data的响应式功能? 一.ref setup 内的自定义属性不具备响应式能力,所以引入了 ref ,ref 底层通过代理,把属性包装值包装成一个 proxy ,proxy 内部是一个对象,使得基础类型的数据具备响应式能力,使用之

  • vue3中的ref,toRef,toRefs三个的作用使用小结

    目录 1. ref的使用 2. toRef的使用 3. toRefs的使用 4.总结 1. ref的使用 ref 接受一个原始值,返回一个具有响应式的对象,对象有一个value属性,其值就是所传递的原始值. ref是做的一个拷贝关系,修改对象msg的值,不会影响对象obj,视图会发生变化. import { ref } from "vue"; let obj = { name: "你好", age: 16 }; let msg = ref(obj.name); co

  • Vue3中的Refs和Ref详情

    小编同样和大家分享关于Vue3中的数据相应的问题,下面我们来例举一个这样的例子 Vue.createApp({ template: `<div>{{ nameObj.name }}</div>`, setup() { const { reactive } = Vue const nameObj = reactive({name:'lilei',age:18}) setTimeout(() => { nameObj.name = 'hanmeimei' },2000) retu

  • Vue API中setup ref reactive函数使用教程

    目录 1.setup 2.ref函数 3.reactive函数 4.Vue3.0中的响应式原理 5.reactive对比ref 1.setup 组件中所用到的:数据.方法等等,均要配置在setup中 setup函数的两种返回值: 若返回一个对象,则对象中的属性.方法, 在模板中均可以直接使用.(重点注意) 若返回一个渲染函数:则可以自定义渲染内容. 注意: vue2可以读取vue3里面的数据 如果 vue2和vue3冲突,会用vue3的,所以 尽量不要与Vue2.x配置混用 Vue2.x配置(d

  • Vue3 style CSS 变量注入的实现

    目录 摘要 基础示例 动机 设计细节 编译细节 采用策略 实践 提示 绑定恰当的属性 注意 style 的更新 参考资料 摘要 在单文件组件样式中支持使用组件状态驱动的 CSS 变量( CSS 自定义属性). 基础示例 <template> <div class="text">hello</div> </template> <script> export default { data() { return { color: '

  • vue3中defineProps传值使用ref响应式失效详解

    子组件接收父组件的传参. 父组件: <template> <Son :data="data"/> </template> <script setup> import { ref } from "vue"; let data = ref('hello') setTimeout(() => { data.value = 'how are you doing' }, 2000) </script> 子组件:

  • DOS下如何声明变量(定义变量)

    dos定义变量 DOS下也只有环境变量可以用 SET [variable=[string]] variable   指定环境变量名.       string    指定要指派给变量的一系列字符串. 要显示当前环境变量,键入不带参数的 SET. 如果命令扩展被启用,SET 会如下改变: 可仅用一个变量激活 SET 命令,等号或值不显示所有前缀匹配      SET 命令已使用的名称的所有变量的值.例如: SET P 会显示所有以字母 P 打头的变量 如果在当前环境中找不到该变量名称,SET 命令

  • Windows Powershell 定义变量

    变量可以临时保存数据,因此可以把数据保存在变量中,以便进一步操作. #定义变量 $a=10 $b=4 #计算变量 $result=$a*$b $msg="保存文本" #输出变量 $result $msg 40 保存文本 powershell 不需要显示地去声明,可以自动创建变量,只须记住变量的前缀为$. 创建好了变量后,可以通过变量名输出变量,也可以把变量名存在字符串中.但是有个例外单引号中的字符串不会识别和处理变量名. 选择变量名 在powershell中变量名均是以美元符"

随机推荐