前言
最近使用 miniprogram-computed 遇到了几个坑,记录下来,告知后来者。
环境
微信开发者工具 稳定版 Stable Build (1.03.2008270)
调试基础库 2.12.1
miniprogram-computed: ^2.1.1
引入miniprogram-computed

命令行操作
# 项目初始化
npm init -y
# 通过 npm 安装
npm install –save miniprogram-computed 
构建npm和使用npm
可以参考我的另外一篇文章
微信小程序三步操作引入Vant Weapp
问题如下
computed 中顺序延后的变量只能获取顺序靠前的变量
<!– test.wxml –>
<view>
  a的值是:{{getA}}
</view> 
1、当 computed 中 curTempObj 在 getA 上面时
// test.js
Component({
  behaviors: [require(‘miniprogram-computed’)],
  computed: {
    curTempObj (data) {
      const {tempArr, curTempIndex} = data
      return tempArr[curTempIndex]
    },
    getA (data) {
      const {curTempObj} = data
      return curTempObj ? curTempObj.a : ‘-‘
    },
  },
  data: {
    tempArr: [
      {
        a: 1
      },
      {
        a: 2
      },
    ],
    curTempIndex: 0
  },
}) 

2、当 computed 中 curTempObj 在 getA 下面时
// test.js
Component({
  behaviors: [require(‘miniprogram-computed’)],
  computed: {
    getA (data) {
      const {curTempObj} = data
      return curTempObj ? curTempObj.a : ‘-‘
    },
    curTempObj (data) {
      const {tempArr, curTempIndex} = data
      return tempArr[curTempIndex]
    },
  },
  data: {
    tempArr: [
      {
        a: 1
      },
      {
        a: 2
      },
    ],
    curTempIndex: 0
  },
}) 

watch 中无法获取旧值
// test.js
Component({
  behaviors: [require(‘miniprogram-computed’)],
  watch: {
    curTempIndex (n, o) {
      console.warn(‘curTempIndex’, n, o);
    },
  },
  ready: function () {
    setTimeout(() => {
      this.setData({
        curTempIndex: 1
      })
    }, 1000);
  },
  data: {
    curTempIndex: 0
  },
}) 

总结
miniprogram-computed 扩展框架的 computed 计算属性只能获取当前变量前面已经定义的变量
miniprogram-computed 扩展框架的 watch 只能获取旧值,且只能在改变时才触发监听器
————————————————
版权声明:本文为CSDN博主「harmsworth2016」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/harmsworth2016/article/details/108597069