报错Unexpected side effect in "listShow" computed property

本文探讨了在代码中如何利用get和set方法来更有效地管理对象属性,尤其是在需要改变属性状态时如何避免错误发生。通过具体示例说明了在特定条件下如何设置属性值,并讨论了只读属性的问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错代码
istShow() {
        if (!this.totalCount) {
          this.fold = true;
          return false;
        }
        let show = !this.fold;
        return show;
      }
    }

因为这样是只读的,要更改,就报错了,想更改,就要用get和set方法

listShow: {
  get: function () {
    return this.fold
  },
  set: function () {
    if (!this.totalCount) {
      this.fold = true
      return false
    }
    let show = !this.fold
    return show
  }
}



代码提示 "Unexpected side effect in 'scheduleBizInfo' computed property" 意味着你在Vue.js等依赖于计算属性(Computed Property)的框架中,发现了某个 `scheduleBizInfo` 的计算过程中产生了意外的副作用,即它改变了数据源,而不是只返回一个新的值。 在JavaScript的响应式系统中,如Vue,计算属性应该是纯函数,不应该有实际的数据改变。当你试图通过 `scheduleBizInfo` 修改了数据,这可能会导致组件状态的混乱,因为计算属性预期只是基于输入提供计算结果。 要修复这个问题,你需要: 1. **移除直接修改数据**:如果是在计算属性内部修改了 `scheduleBizInfo`,应该改为创建新的对象或数组,而不直接操作原始数据。 ```javascript // 错误示例: this.scheduleBizInfo.push(newItem); // 正确示例: this.scheduleBizInfo = [...this.scheduleBizInfo, newItem]; ``` 2. **确保仅读取数据**:如果你需要修改来自外部的数据源,那可能是由于数据源本身的问题。在这种情况下,可以在修改数据后手动触发视图更新,比如通过 `$set` 或者 `this.$emit('update:scheduleBizInfo', newValue)`。 ```javascript // 示例 const newData = fetchNewData(); this.$set(this, 'scheduleBizInfo', newData); ``` 3. **检查生命周期钩子**:确保没有在某些生命周期钩子如 `beforeUpdate` 或 `updated` 中意外地修改了 `scheduleBizInfo`。 记得在更改后检查是否所有相关的视图都已正确更新,并确认代码逻辑不会导致其他不可预见的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值