vue3中reactive数据被重新赋值后无法双向绑定的解决

 更新时间:2022年05月25日 09:45:32   作者:aliven1  
这篇文章主要介绍了vue3中reactive数据被重新赋值后无法双向绑定的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

reactive数据被重新赋值后无法双向绑定

这是因为reactive数据被重新赋值后,原来数据的代理函数和最新的代理函数不是同一个,无法被触发

在这里插入图片描述

推荐写法

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发送ajax请求详解

    vue发送ajax请求详解

    如何利用vue进行AJAX,其它vue本身不支持发送AJAX请求,需要使用vue-resource(vue1.0版本)或axios(vue2.0版本)第三方插件的支持才行
    2018-10-10
  • vue如何在引入的el-tree前添加图标

    vue如何在引入的el-tree前添加图标

    这篇文章主要介绍了vue如何在引入的el-tree前添加图标问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • vue中then后的返回值解析

    vue中then后的返回值解析

    这篇文章主要介绍了vue中then后的返回值解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • 详解vee-validate的使用个人小结

    详解vee-validate的使用个人小结

    本篇文章主要介绍了详解vee-validate的使用个人小结,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-06-06
  • vue 实现滚动到底部翻页效果(pc端)

    vue 实现滚动到底部翻页效果(pc端)

    这篇文章主要介绍了pc端vue 滚动到底部翻页效果,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-07-07
  • vue + socket.io实现一个简易聊天室示例代码

    vue + socket.io实现一个简易聊天室示例代码

    本篇文章主要介绍了vue + socket.io实现一个简易聊天室示例代码,具有一定的参考价值,有兴趣的可以了解一下。
    2017-03-03
  • vue项目上传Github预览的实现示例

    vue项目上传Github预览的实现示例

    这篇文章主要介绍了vue项目上传Github预览的实现示例,在完成Vue项目以后,在上传到github并实现预览
    2018-11-11
  • Vue3 + MybatisPlus实现批量删除功能(详细代码)

    Vue3 + MybatisPlus实现批量删除功能(详细代码)

    这篇文章主要介绍了Vue3 + MybatisPlus实现批量删除功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-03-03
  • Vue.js按键修饰符及v-model修饰符示例详解

    Vue.js按键修饰符及v-model修饰符示例详解

    这篇文章主要介绍了Vue.js按键修饰符及v-model修饰符,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • vue使用element-plus依赖实现表格增加的示例代码

    vue使用element-plus依赖实现表格增加的示例代码

    这篇文章主要为大家详细介绍了vue使用element-plus依赖实现表格增加,文中示例代码讲解的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2023-12-12

最新评论