没有用reactive包裹的非响应式数据,为什么也具有响应式

没有用reactive包裹的非响应式数据,为什么也具有响应式

老师你好,没有用reactive包裹的非响应式数据,为什么也具有响应式,我点击按钮修改数据 ,页面也会跟着改变。


<template>

  <div class="wrapper">

    <div class="data" v-for="item in state.todoList" :key="item">state:{{item}}</div>

    <div class="data" v-for="item in objdata.objlist" :key="item">objdata:{{item}}</div>

    <el-button @click="handleClick">change</el-button>

  </div>

</template>


<script>

import {reactive} from 'vue'

export default {

    name:'TestResponse',

    setup(){

      const state = reactive({

        todoList:['打牌','game','test']

      })

      const objdata = {

        objlist:['obj','dfe']

      }

      const handleClick = () => {

        state.todoList.push('music')

        objdata.objlist.push('kkk')

      }

      return {state,objdata,handleClick}

    }

}

</script>




正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小李 2022-05-19 11:19:25

同学你好,解答如下:

reactive是一个函数,它可以将定义的符合数据类型,成为响应式数据。

https://img1.sycdn.imooc.com//climg/6285b6c309e14fb821040816.jpg

所以同学这里使用reactive包裹的数据,会转变成响应式返回。

祝学习愉快!

  • 提问者 慕先生2219899 #1

    问题是那个objdata,我没有用reactive,也具有响应式,数据改变也会触发视图更新,是什么原因

    2022-05-19 11:29:47
  • 好帮手慕小李 回复 提问者 慕先生2219899 #2

    同学你好,抱歉老师这里看差了。vue是mvvm框架,mvvm框架解决了一个核心问题是连接数据层和视图层,它通过的是数据驱动应用,当数据发生了变化,视图就会更新。

    同学这里使用点击事件改变了数据->objdata.objlist.push('kkk'),也就是说objData中的objlist发生了变化,视图就会更新。同学如有兴趣可以在后面的diff算法课程中做进一步了解。

    祝学习愉快!

    2022-05-19 11:44:30
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师