data 在Vue实例中值可以为object,在组件中 只能为function,用return拿到数据

例:

var vm = new Vue({
  data:{
      a:1
  }
})
vm.a // => 1
vm.$data === data // => true
var Component = Vue.extend({
  data() {
    return { 
      a: 1 
    }
  }
})

props的值可以为对象或者数组,用于接收来自父组件的数据。

Vue.component('props-demo-advanced', {
  props: {
    // 检测类型
    height: Number,
    // 检测类型 + 其他验证
    age: {
      type: Number,
      default: 0,
      required: true,
      validator: function (value) {
        return value >= 0
      }
    }
  }
})

子组件中data和props的区别:

子组件中的data数据,不是通过父组件传递的是子组件私有的,是可读可写的。

子组件中的所有 props中的数据,都是通过父组件传递给子组件的,是只读的。

所以,通常不需要外界传入,且希望子组件可以自己控制的数据,用data写入