vue3中reactive數據被重新賦值后無法雙向綁定的解決
reactive數據被重新賦值后無法雙向綁定
這是因為reactive數據被重新賦值后,原來數據的代理函數和最新的代理函數不是同一個,無法被觸發(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數據的雙向綁定
一、script setup
現在,沒必要把數據寫到data里面,或者是寫一個setup函數,再進行return出去。
import進來的組件,可以直接在頁面中使用,不再需要vue2的component或者是setup函數的return了。
<script setup> import Header from '../home/Header.vue' import Footer from '../home/Footer.vue' </script>
組件中使用:
<template> ?? ?<Header></Header> ?? ?<Footer></Footer> </template>
二、ref() 函數
ref()這個函數使得我們的變量擁有了雙向綁定屬性
使用步驟:
1、引入ref
2、給變量附初始值,ref(1)
3、 重點?。?!變量的值要用 .value來獲取 ,例如a,a.value
三、reactive()函數
這也是和ref一樣使得我們的變量擁有了雙向綁定屬性, 這個函數接收一個對象作為參數
使用步驟:
1、引入ref
2、 重點!??!給變量附初始值,reactive({value:1}) 接收對象作為參數的時候,應該這樣寫
打印一個對象或者是數組,根據控制臺輸出, 可以看到 變量是一個Proxy掛鉤, 掛在一個target 對象上
3、變量的值要用 .value來獲取 ,例如a,a.value
來一個通俗易懂的示例:
//HTML結構 <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定義一個變量,如下:
//let data = ref('')
let lxImges = reactive({ value: [],}//重點?。。?!
fetch("abcd", {
? method: "get",
}).then((res) => {
? //console.log(res);
? lxImges.value = res.data;//重點!?。?!
});
</script>以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue.config.js中configureWebpack與chainWebpack區(qū)別及說明
這篇文章主要介紹了vue.config.js中configureWebpack與chainWebpack區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09

