打代码能当饭吃? 2023-09-11 09:17 采纳率: 50%
浏览 6
已结题

关于#vue.js#的问题:通过一个函数改变这两个变量的值,没有用ref包裹起来的变量在视图上也跟着响应式改变(语言-javascript)

vue3中的响应式问题
有两个变量,一个a,一个b;其中一个变量用ref包裹起来,另一个直接定义。通过一个函数改变这两个变量的值,没有用ref包裹起来的变量在视图上也跟着响应式改变;若只单独改变b的变量则b在视图上并不会变化,请问这是什么原因,那这是不是代表以后定义变量只要让其中一个包裹ref就好了?
代码如下:

<template>
  <div>
    {{a }}--{{ b}}
  </div>
  <button @click="change()">修改</button>
</template>
<script setup lang="ts">
import { ref } from 'vue';

const a = ref(1);
let b = 2;

function change() {
  a.value = 10;
  b = 20;
  console.log(a.value,b)
}
</script>

<template>
  <div>
    {{a }}--{{ b}}
  </div>
  <button @click="change()">修改</button>
</template>
<script setup lang="ts">
import { ref } from 'vue';

const a = ref(1);
let b = 2;

function change() {
  b = 20;
  console.log(a.value,b)
}
</script>


  • 写回答

2条回答 默认 最新

  • 禅思院 领域专家: 前端开发技术领域 2023-09-11 09:42
    关注

    因为a 和b 在同一个视图上 因为a 是双向绑定 改变触发视图的更新 b 不是 但是 a和b 在同一视图理 所以也会跟着变,只改变b 是不会触发视图更新的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月19日
  • 已采纳回答 9月11日
  • 创建了问题 9月11日