vue3中reactive數(shù)據(jù)被重新賦值后無法雙向綁定的解決
reactive數(shù)據(jù)被重新賦值后無法雙向綁定
這是因?yàn)閞eactive數(shù)據(jù)被重新賦值后,原來數(shù)據(jù)的代理函數(shù)和最新的代理函數(shù)不是同一個(gè),無法被觸發(fā)
推薦寫法
import {reactive, toRefs} from 'vue' setup(props, context) { const state = reactive({ myMessage:'', myDialog: '', myForm: ref(''), searchValue: ref(''), searchType: ref(''), checked: ref(false), actIndex: reactive({ arr: [0] }), dialogTableVisible2: ref(false), dialogTableVisible3: ref(false) }) return { ...toRefs(state), } }
vue3數(shù)據(jù)的雙向綁定
一、script setup
現(xiàn)在,沒必要把數(shù)據(jù)寫到data里面,或者是寫一個(gè)setup函數(shù),再進(jìn)行return出去。
import進(jìn)來的組件,可以直接在頁(yè)面中使用,不再需要vue2的component或者是setup函數(shù)的return了。
<script setup> import Header from '../home/Header.vue' import Footer from '../home/Footer.vue' </script>
組件中使用:
<template> ?? ?<Header></Header> ?? ?<Footer></Footer> </template>
二、ref() 函數(shù)
ref()這個(gè)函數(shù)使得我們的變量擁有了雙向綁定屬性
使用步驟:
1、引入ref
2、給變量附初始值,ref(1)
3、 重點(diǎn)?。?!變量的值要用 .value來獲取 ,例如a,a.value
三、reactive()函數(shù)
這也是和ref一樣使得我們的變量擁有了雙向綁定屬性, 這個(gè)函數(shù)接收一個(gè)對(duì)象作為參數(shù)
使用步驟:
1、引入ref
2、 重點(diǎn)?。?!給變量附初始值,reactive({value:1}) 接收對(duì)象作為參數(shù)的時(shí)候,應(yīng)該這樣寫
打印一個(gè)對(duì)象或者是數(shù)組,根據(jù)控制臺(tái)輸出, 可以看到 變量是一個(gè)Proxy掛鉤, 掛在一個(gè)target 對(duì)象上
3、變量的值要用 .value來獲取 ,例如a,a.value
來一個(gè)通俗易懂的示例:
//HTML結(jié)構(gòu) <div class="lx-content"> ? ? ? ? ? <div ? ? ? ? ? ? class="lx-img" ? ? ? ? ? ? v-for="(item, i) in lxImges.value" ? ? ? ? ? ? :key="i" ? ? ? ? ? > ?? ? ? ? ? ? ? ?<img :src="item.img" alt="" /> ? ? ? ? ? </div> </div>
<script setup> import fetch from "../../fetch.js"; import { ref, reactive, onMounted } from "vue"; //如果說需要用ref定義一個(gè)變量,如下: //let data = ref('') let lxImges = reactive({ value: [],}//重點(diǎn)?。。。? fetch("abcd", { ? method: "get", }).then((res) => { ? //console.log(res); ? lxImges.value = res.data;//重點(diǎn)?。。。? }); </script>
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用vue.js開發(fā)時(shí)一些注意事項(xiàng)
使用vue.js進(jìn)行項(xiàng)目的開發(fā)已經(jīng)有了一定的時(shí)間,在任務(wù)的過程中以及和不同的開發(fā)使用者交流中,逐漸對(duì)vue.js的使用心得有了一定的積累。本文主要給大家分享一些開發(fā)時(shí)需要注意的事項(xiàng)2016-04-04vue實(shí)現(xiàn)前端保持篩選條件到url并進(jìn)行同步參數(shù)設(shè)計(jì)
這篇文章主要為大家介紹了vue實(shí)現(xiàn)前端保持篩選條件到url并進(jìn)行同步參數(shù)設(shè)計(jì)思路詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08Vue引入Stylus知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給各位整理的是一篇關(guān)于Vue引入Stylus知識(shí)點(diǎn)總結(jié)內(nèi)容,有需要的朋友們可以學(xué)習(xí)參考下。2020-01-01vue3+vite+antd如何實(shí)現(xiàn)自定義主題
這篇文章主要介紹了vue3+vite+antd如何實(shí)現(xiàn)自定義主題問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03vue3.0實(shí)踐之寫tsx語(yǔ)法實(shí)例
很久不寫博客了,最近在使用ts和tsx開發(fā)vue類項(xiàng)目,網(wǎng)上資料比較少,順便記錄一下方便同樣開發(fā)的人互相學(xué)習(xí)共同進(jìn)步,下面這篇文章主要給大家介紹了關(guān)于vue3.0實(shí)踐之寫tsx語(yǔ)法的相關(guān)資料,需要的朋友可以參考下2022-07-07手把手教你如何創(chuàng)建一個(gè)VUE項(xiàng)目(超簡(jiǎn)單)
這篇文章主要給大家介紹了關(guān)于如何創(chuàng)建一個(gè)VUE項(xiàng)目的相關(guān)資料,創(chuàng)建vue項(xiàng)目有很多種方式,這里給大家介紹一種非常簡(jiǎn)單的方法,需要的朋友可以參考下2023-08-08