vue3如何定義變量及ref、reactive、toRefs特性說明
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使用數據。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Vue3中的ref和reactive響應式原理解析
- vue3常用的API使用簡介
- Vue3中ref和reactive的基本使用及區別詳析
- Vue3如何理解ref toRef和toRefs的區別
- Vue3常用的通訊方式總結與實例代碼