JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://unpkg.com/[email protected]/dist/vue.js"></script>
<div id="app">
  {{item}}
</div>

JavaScript

var vm = new Vue({
    el: '#app',
    watch: {
      item: {
        handler(val, oldVal){
          console.log('Item Changed')
          console.log(val)
        },
        deep: true
      }
    },
    data: {
      item: [{foo: 'foo'}]
    }
})

setTimeout(() => {
  vm.$data.item[0]['foo'] = 'bar';
},1000)

setTimeout(() => {
  Vue.set(vm.$data.item,1,{'bar' : 'bar'});
},2000)