父组件向子组件传递数据
<template>
<div>
<children :mes="message" :fruitlist="fruit"></children>
</div>
</template>
<script>
import children from '../components/children/children.vue'
export default {
name: 'parent',
data () {
return {
message: '你好',
fruit: ['苹果','香蕉','橘子','菠萝','桃子'],
};
},
components: {
children
}
}
</script>
<template>
<div>
<h2>{{mes}}</h2>
<h2>{{fruitlist}}</h2>
</div>
</template>
<script>
export default {
name: 'children',
data () {
return {
};
},
props: {
mes: String,
fruitlist: {
type: Array,
default: '没有水果',
required: true
}
}
}
</script>
子组件向父组件传递数据
<template>
<div>
<button v-for="item in fruit" :key="item" @click="send(item)">{{item}}</button>
</div>
</template>
<script>
export default {
name: 'children',
data () {
return {
fruit: ['苹果','香蕉','橘子','菠萝','桃子'],
};
},
methods: {
send(item) {
this.$emit('item-click',item)
}
},
}
</script>
<template>
<div>
<h2>子组件中点击的按钮:{{fruit}}</h2>
<children @item-click='get'/>
</div>
</template>
<script>
import children from '../components/children/children.vue'
export default {
name: 'parent',
data () {
return {
fruit: ''
};
},
components: {
children
},
methods: {
get(item) {
this.fruit = item
}
},
}
</script>
父子组件的访问
- 父组件访问子组件:使用$refs/children (不推荐使用children)
- 子组件访问父组件:使用$parent (不建议使用)
<template>
<div>
<children ref="cpn"></children>
<button @click="getfruit">获取子组件的水果列表</button>
<button @click="getaaa">调用子组件的函数aaa</button>
<button @click="getbbb">调用子组件的函数bbb</button>
</div>
</template>
<script>
import children from '../components/children/children.vue'
export default {
name: 'parent',
data () {
return {
fruit: ''
};
},
components: {
children
},
methods: {
getfruit() {
console.log(this.$refs.cpn.fruit);
},
getaaa() {
this.$refs.cpn.aaa()
},
getbbb() {
this.$refs.cpn.bbb()
}
},
}
</script>
<template>
<div>
<button @click="getccc">调用父组件的函数ccc</button>
</div>
</template>
<script>
export default {
name: 'children',
data () {
return {
fruit: ['苹果','香蕉','橘子','菠萝','桃子'],
};
},
methods: {
aaa() {
console.log("aaa函数被调用");
},
bbb() {
console.log("bbb函数被调用");
},
getccc() {
this.$parent.ccc()
}
},
}
</script>