value值没有根据下拉选择而改变

代码

<el-form-item label="类型">
      <el-select v-model="type" placeholder="全部" clearable>
        <el-option label="转租" value="0" />
        <el-option label="短租" value="1" />
        <el-option label="长租" value="2" />
        <el-option label="招租" value="3" />
      </el-select>
    </el-form-item>
let type = ref(null)

let pageHouseDTO = reactive<PageHouseInter>({
  type: type.value,
  provinceId: null,
  cityId: null,
  areaId: null,
  pageNum: 1,
  pageSize: 20
})

在你的代码中,type 是一个 Vue 3 的 ref 对象,而 pageHouseDTO.type 被初始化为 type.value 的值,即 null。这里的关键是,当你改变 type.value 时,pageHouseDTO.type 的值并不会自动更新,因为 pageHouseDTO.type 只是一个普通的 JavaScript 变量,它接收了 type.value 的初始值,但之后就不再与 type.value 保持同步。

为了解决这个问题,你可以有几种方法:

方法 1: 使用计算属性(Computed Property)

你可以使用 Vue 3 的 computed 来创建一个响应式的属性,该属性会自动根据 type.value 的变化而变化。

import { ref, reactive, computed } from 'vue';  
  
let type = ref(null);  
  
let pageHouseDTO = reactive({  
  // 注意这里不再直接引用 type.value  
  type: computed(() => type.value),  
  provinceId: null,  
  cityId: null,  
  areaId: null,  
  pageNum: 1,  
  pageSize: 20  
});  
  
// 注意:由于 type 是通过 computed 提供的,你不能直接修改 pageHouseDTO.type  
// 如果你需要修改 type,你应该直接修改 type.value

但请注意,由于 pageHouseDTO.type 是一个计算属性,你不能直接修改它(即 pageHouseDTO.type = someValue 会导致错误)。如果你需要修改 type,你应该直接修改 type.value

方法 2: 使用 watch 监听 type 的变化

如果你不想使用计算属性,或者你需要执行一些额外的逻辑来更新 pageHouseDTO.type,你可以使用 watch来监听 type 的变化。

import { ref, reactive, watch } from 'vue';  
  
let type = ref(null);  
  
let pageHouseDTO = reactive({  
  type: null, // 初始化为 null 或其他默认值  
  provinceId: null,  
  cityId: null,  
  areaId: null,  
  pageNum: 1,  
  pageSize: 20  
});  
  
watch(type, (newValue) => {  
  pageHouseDTO.type = newValue;  
});  
  
// 现在,每当 type.value 变化时,pageHouseDTO.type 也会相应更新

这种方法允许你在 type 变化时执行额外的逻辑,并且你可以直接修改 pageHouseDTO.type

方法 3: 直接在需要时传递 type.value

如果你只是在某些函数或操作中需要 type 的值,并且不想在 pageHouseDTO 中保持它的响应性,你可以直接在需要时传递 type.value

function someFunction() {  
  // 直接使用 type.value  
  console.log(type.value);  
  // 或者在调用其他函数时传递它  
  someOtherFunction(type.value);  
}

这种方法适用于你不需要在多个地方或组件中持久保持 type 的响应性状态的情况。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值