vue怎么监听数组项？
如下数组，其中ccc属性值根据bbb属性和ddd属性计算得到的，我需要监听数据项的变化，动态计算ccc属性值
```
 export default {
        data() {
            return {
                aaa: [{
                   bbb: "xxx",
                   ddd: "xxx",
                   ccc: ""
                }, {
                   bbb: "yyy",
                   ddd: "yyy",
                   ccc: ""
                }]
            }
        }
       
 }

```
于是我使用了watch监听
```
 watch: {
            aaa: {
                deep: true,
                handler(newValue, oldValue) {
                    for (let i = 0; i < newValue.length; i++) {
                        newValue[i].ccc = newValue[i].bbb + newValue[i].ddd;
                    }
                }
            }
        }
```
这种方法会导致每个数据项的变动，需要所有数据项都计算一次，有没有什么好的方式？
而且，还有个问题，监听数组并没法获取到旧值，也就是newValue和oldValue是一模一样的，都是新的值。
这个问题主要是讨论性能问题，比如每个数组有100个属性项，又或者ccc是通过耗性能的计算得到的，那么每次数据项的变动都导致所有数据项重新计算一次，这耗费的性能不可想象，所以大家可以想一下，看有没有好的实现方案?? 实现目标是只对变动的数据项进行计算
```
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <div id="app">
    <div v-for="v of list">
      <input type="number" v-model="v.a">
      <input type="number" v-model="v.b">
      <span>sum: {{v|sum}}</span>
      <span>和：{{v.c}}</span>
    </div>
  </div>
<script src="https://cdn.staticfile.org/vue/2.6.13/vue.min.js"></script>
  <script>
    new Vue({
      el: '#app',
      filters: {
        sum: item => +item.a + (+item.b)
      },
      data: {
        list: [{
          a: 1,
          b: 2,
          get c() {
            return +this.a + (+this.b)
          }
        }, {
          a: 3,
          b: 4,
          get c() {
            return +this.a + (+this.b)
                    }
        }]
      }
    })
  </script>
</body>
</html>
```
比较简单的方式——过滤器或者直接定义一个getter；
还有一个方式就是将动态计算显示的那个属性抽成组件，传入props通过vue的computed去计算，和直接在数据上定义getter原理上是一样的