通过props实现父组件向子组件传递数据:
App组件中包含list数据,要把App中的list数据传递给List子组件,并由子组件展示到页面中。
父组件APP:
<template> <div> <MyList :list="list"/> //Mylist组件绑定data中的list </div> </template> <script> import MyList from './components/List.vue' export default { components: { MyList}, data() { return { list: [ { id: 1, title: 'a1' }, { id: 2, title: 'a2' } ] } }, } </script>
子组件MyList:
<template> <div> <ul> //遍历list并展示 <li v-for="item in list" :key="item.id"> {{ item.title }} </li> </ul> </div> </template> <script> export default { //通过props接收App中的list数据,指定类型为数组 props:{ list: Array } } </script>

通过$emit实现子组件向父组件传递数据:
在MyInput子组件中,通过在输入框输入数据并点击添加按钮把输入的数据保存到App的list中。
子组件MyInput:
<template> <div class="input"> <input type="text" v-model="title"> //绑定input框中的title数据 <button @click="add">添加</button> //添加按钮点击事件回调add </div> </template> <script> export default { data() { return { title: '' } }, methods: { //通过add方法中的$emit把title发送出去 add() { this.$emit('add', this.title) } } } </script>
App:
<template> <div> <MyInput @add="add"/> //监听MyInput的add </div> </template> <script> import MyInput from './components/Input.vue' export default { components: { MyInput}, data() { return { list: [ { id: 1, title: 'a1' }, { id: 2, title: 'a2' } ] } }, methods: { //接收到add中的title后把title添加到list中 add(title) { this.list.push({ id: Math.random(), //使用随机数作为id title }) } }, } </script>

MyInput组件把输入框的内容传递给App之后,App中list数据增加,自然也会传递给MyList组件并展示到页面上。
完整App:
<template> <div> <MyInput @add="add"/> //监听MyInput的add <MyList :list="list"/> </div> </template> <script> import MyInput from './components/Input.vue' import MyList from './components/List.vue' export default { components: { MyInput, MyList}, data() { return { list: [ { id: 1, title: 'a1' }, { id: 2, title: 'a2' } ] } }, methods: { //接收到add中的title后把title添加到list中 add(title) { this.list.push({ id: Math.random(), //使用随机数作为id title }) } }, } </script>