1、data必须是一个函数,防止多个组件实例共享一份数据。虽然属性默认值,我们不应该去修改它,但实际上,有些人会这么做
一个组件的 data 选项必须是一个函数,因此每个实例可以维护一份被返回对象的独立的拷贝
data() {
return {
msg:"hh"m
}
}
2、父组件引入子组件,并且有components
子组件:使用props属性
3、props通常使用对象的写法,有利于维护。可以自定义校验,默认值
问题待解决:
1、子组件为什么不能修改父组件传递的prop: 主要还是一个单向数据流的问题,要保证数据的更新都是从顶层往下层流动
2、如果修改了,Vue是如何监控到属性的修改并给出警告的 Object.defineProperty
如果属性是通过父组件修改的话,标志位不会走到报错这个逻辑。但如果是子组件直接修改的话,会提示报错。、
3、this.$emit的返回值是this,需要返回值可以使用回调参数