封装的子组件是一个空壳子,没有数据,父组件通过接口获取数据,父传子给子的空壳子,让封装的子有数据,再把带有数据的子标签放在父组件里。如果点击子标签想要达成什么效果,子标签是子组件的替身,实际上是点击子组件,子传父数据到父的子标签里,再由标签将事件传达出去。
父传子:父组件把数据传递给子组件,步骤:
<1>在父组件中注册子组件(3步引入、注册、写标签)
<2>在父组件的子标签中,绑定数据::AAA="xxx"(动态),AAA="写死的"
例:<car-Item :go="xxx"></car-Item>
<3>在子组件接受数据
例:export default{
props: {
go: {
type:String/Number/Boolean/Object,//数据类型,首字母大写
default:"默认值"//可以不写
require:true//必填值,不传值会报错,与default不同时使用}}};
<4>在子组件中使用父组件传来的数据,当data里的数据使用方法
子传父:父子组件把数据传递给父组件,步骤:
<1>在父组件中注册子组件(3步引入、注册、写标签)
<2>在子组件自定义函数AAA,将数据传给父组件this.$emit("自定义事件CCC",要传的数据),自定义函数AAA,可在子组件中被事件调用
例:methods:{
AAA(){
this.$emit("CCC","1月24日");}}
<button @click="AAA">子</button>
<3>在父组件的子标签中,绑定子组件中的"自定义事件", @"自定义事件CCC"="函数BBB"
例:<子标签 @CCC="BBB" ></子标签>
<4>在父组件接受数据,"自定义函数BBB"
例:methods:{
BBB(twoData){
console.log(twoData)
this.msg=twoData}},