我的账户
猩码学苑

专注C++开发菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

冯文直-前端-20230208

[复制链接]
。5962 发表于 2023-2-8 22:45:17 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
标题:冯文直-前端-20230208
一、今日学习内容:
Vue组件
组件就是对局部视图的封装,每个组件包含了HTML 结构 CSS 样式 JavaScript 行为 data 数据 methods 行为
组件基本使用
为了能在模板中使用,这些组件必须先注册以便 Vue 能够识别。
有两种组件的注册类型:全局注册和局部注册
组件命名
可使用驼峰(camelCase)或者横线分隔(kebab-case)命名方式
DOM 中只能使用横线分隔方式进行引用组件
建议使用驼峰方式,适用性更强,DOM中使用组件时要转换成短横线方式。
全局组件
一般把网页中特殊的公共部分注册为全局组件:轮播图、分页、通用导航栏
全局注册之后,可以在任何新创建的 Vue 实例 (new Vue) 的模板中使用
创建组件的方式
组件构造器
1创建组件构造器:Vue.extend({})
2注册已经创建好的组件:Vue.component(" abc", 构造器);
3使用注册好的组件:<abc></abc>
// 2 注册已经创建好的组件
注意点:
1 vue2.x仅支持:单个根元素,最外层要有个<div>包裹
vue3.x支持:多个根节点元素
2 模板支持指令语法
模板字符串(反引号``)需要浏览器提供支持(ES6语法),学了前端工程化就不需要关注这个问题了。
3 ==在组件中data是个函数,vuedata是个对象。==

全局组件:在任何一个Vue实例控制的区域中都可以使用
局部组件:只能在自定义的那个Vue实例控制的区域中可以使用
如何自定义一个局部组件
vue实例中新增属性components: {}
{}中通过key/vue形式注册组件
组件中的datamethods组件是可复用的 Vue 实例,不需要手动实例化, new Vue 接收相同的选项
组件的 data 选项必须是一个函数
因为自定义组件可以复用, 为了保证复用时每个组件的数据都是独立的, 所以必须是一个函数组件中的data如果不是通过函数返回的, 那么多个组件就会公用一份数据, 就会导致数据混乱,如果组件中的data是通过函数返回的, 那么每创建一个新的组件, 都会调用一次这个方法,将这个方法返回的数据和当前创建的组件绑定在一起, 这样就有效的避免了数据混乱
组件切换
v-if切换: v-if的方式来切换视图: 创建和销毁(导致组件的状态不能留存)
v-show切换: 显示和隐藏,没有办法操作Dom结构(会保存组件的状态)

1.组件切换
对于普通的元素我们可以通过v-if来实现切换
对于组件我们也可以通过v-if来实现切换
因为组件的本质就是一个自定义元素
动态组件
通过v-if/v-else-if/v-else确实能够切换组件
但是在Vue中切换组件还有一种更专业的方式
<component v-bind:is="需要显示组件名称"></component>
component我们称之为动态组件, 也就是你让我显示谁我就显示谁。
component可以配合keep-alive来保存被隐藏组件隐藏之前的状态,保持这些组件的状态,以避免反复重新渲染导致的性能问题
is后绑定的是会被展示出来的组件名
父子组件
在一个组件中又定义了其它组件就是父子组件
其实局部组件就是最简单的父子组件, 因为我们说过可以把Vue实例看做是一个大组件
我们在Vue实例中定义了局部组件, 就相当于在大组件里面定义了小组件, 所以局部组件就是最简单的父子组件
如何定义其它的父子组件
自定义组件中可以使用data, 可以使用methods. 当然自定义组件中也可以使用components,所以我们也可以在自定义组件中再定义其它组件
父子组件通信
props 父组件向子组件传递数据
$emit 自定义事件
slot 插槽分发内容
父子组件数据传递
Vue中子组件是不能访问父组件的数据的,
如果子组件想要访问父组件的数据, 必须通过父组件传递

在父组件中通过v-bind传递数据
在子组件中通过props接收数据
父子组件传递方法-自定义事件
父组件是使用 props 传递数据给子组件,但如果子组件要把数据传递回去,就需要使用自定义事件!
我们可以使用 v-on(@) 绑定自定义事件
使用 $on(eventName) 监听事件
使用 $emit(eventName) 触发事件
二、今日问题:无
三、解决方案:无

回复

使用道具 举报

关注0

粉丝0

帖子32

发布主题
大家都在学
课堂讨论
一周热帖排行最近7x24小时热帖
关注我们
专注C++菁英教育

客服电话:18009298968

客服时间:9:00-21:00

猩码学苑 - 专注C++开发菁英教育!( 陕ICP备2025058934号-1 )

版权所有 © 陕西菁英数字科技有限公司 2023-2026