Vue 通过props实现父子组件通信

简介: 本文目录1. 前言2. 开发新闻列表父组件3. 开发新闻内容子组件4. 小结

1. 前言

大多数企业官网,都有新闻列表功能,一般情况下我们会把新闻列表封装为一个组件。


如果每个针对新闻列表的每条新闻,都要开发很多可复用的复杂功能,那么也可以进一步的将新闻内容开发为一个单独的组件。


此时新闻列表组件为父组件,新闻内容组件为子组件,如果想从父组件向子组件传值(通讯),可以借助props来实现。


2. 开发新闻列表父组件

在src/componets目录下新建NewsList.vue,代码如下。


<template>

 <div>

   <template v-for="item in list">

     <NewsContent :news="item"></NewsContent>

   </template>

 </div>

</template>

<script>

import NewsContent from '@/components/NewsContent.vue';

export default {

 name: "MyCounter",

 data() {

   return {

     list: [

       {

         title: "今天天气不错",

         author: "张三"

       },

       {

         title: "今天下雨了",

         author: "李四"

       }

     ]

   }

 },

 components: {

   NewsContent

 }

}

</script>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

需要注意的是每条新闻都是一个子组件NewsContent,然后每个子组件都有一个:news属性,用来将item的值传递给子组件。


3. 开发新闻内容子组件

之前我们在父组件中已经注册了子组件NewsContent,且通过:news属性来给子组件传值,所以子组件NewsContent.vue代码如下。


<template>

 <div>

   <p>

     新闻标题:{{news.title}}--新闻作者:{{news.author}}

   </p>

 </div>

</template>

<script>

export default {

 name: "MyCounter",

 props: ['news'],

 mounted() {

   console.log(this.news);

 }

}

</script>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

注意重点是props: ['news'],我们定义了一个名为news的props属性,用来接收父组件传过来的值。


注意news属性可以在模板代码,以及mounted或者methods方法中自由引用,这样就可以随时利用父组件传过来的值了。


4. 小结

通过props属性可以轻松的实现父子组件传值,但是注意props只能从父组件向子组件单向传值,这样保证了代码的简洁明了。

相关文章
|
3天前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
3天前
|
存储 缓存 JavaScript
如何在大型 Vue 应用中有效地管理计算属性和侦听器
在大型 Vue 应用中,合理管理计算属性和侦听器是优化性能和维护性的关键。本文介绍了如何通过模块化、状态管理和避免冗余计算等方法,有效提升应用的响应性和可维护性。
|
2天前
|
JavaScript 前端开发 UED
vue学习第二章
欢迎来到我的博客!我是一名自学了2年半前端的大一学生,熟悉JavaScript与Vue,目前正在向全栈方向发展。如果你从我的博客中有所收获,欢迎关注我,我将持续更新更多优质文章。你的支持是我最大的动力!🎉🎉🎉
|
2天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。自学前端2年半,熟悉JavaScript与Vue,正向全栈方向发展。博客内容涵盖Vue基础、列表展示及计数器案例等,希望能对你有所帮助。关注我,持续更新中!🎉🎉🎉
|
数据库
基于springboot+mybatisplus+vue的课程学分管理系统
基于springboot+mybatisplus+vue的课程学分管理系统
137 0
基于springboot+mybatisplus+vue的课程学分管理系统
基于Springboot+MybatisPlus+Vue的在线课程管理系统
基于Springboot+MybatisPlus+Vue的在线课程管理系统
140 0
基于Springboot+MybatisPlus+Vue的在线课程管理系统
|
JavaScript 前端开发 Java
基于Springboot+MybatisPlus+Vue的前后端分离的学生选课课程教务管理系统
基于Springboot+MybatisPlus+Vue的前后端分离的学生选课课程教务管理系统
233 0
基于Springboot+MybatisPlus+Vue的前后端分离的学生选课课程教务管理系统
|
前端开发 Java 关系型数据库
前后端分离Springboot+Vue实现课程社区管理系统
本项目主要实现一个基于课程选课的社区交流系统,主要的业务背景为每个老师可以自己开设相应的选修课,并指定可以选修的人数,学生登陆系统后可以进行选课,并可以在线针对自己的选课进行在线讨论,点赞等互动行为。管理员则主要是对基本信息的相关管理,比如用户和角色、权限管理等,本系统有着完备的权限管理控制系统,可以根据需要自定角色并分配相应的权限。系统采用前后端分离开发的方式来实现。
180 0
前后端分离Springboot+Vue实现课程社区管理系统
|
JavaScript
Vue课程52命令v-if和v-show的区别
Vue课程52命令v-if和v-show的区别
136 0
Vue课程52命令v-if和v-show的区别
|
JavaScript
Vue课程45-事件绑定v-on指令的简写模式
Vue课程45-事件绑定v-on指令的简写模式
143 0
Vue课程45-事件绑定v-on指令的简写模式