zoukankan      html  css  js  c++  java
  • 组件传值&组件插槽&Vuex

    组件注册

    全局注册

    • component有两个参数,第一个参数是该组件的名字,

    • 第二个参数看做是一个在Html中显示的模板对象,

    • 组件模板只能由一个根标签囊括全部内容,可以是模板字符串,即: ``

    • 组件允许多次使用,其内有个data属性,每个组件在使用时,单独维护自己的data对象

    • 渲染如下:

    • 当然在模板中的属性可不止只有 template属性,还有很多其他的属性,接下来用到做详细说明

    局部注册

    • 局部顾名思义就是只能在局部使用,只能在注册它的Vue实例中使用

    • 渲染效果如下

    组件之间通信传值

    父组件向子组件传值

    1. 父组件发送的形式是以属性的形式绑定值到子组件身上。

    2. 然后子组件用属性props接收,是数组,可以接收多个参数

    3. 如果在props中使用的是驼峰形式:

      • 模板中需要使用短横线的形式

      • 字符串形式的模板中没有这个限制

    • 模板渲染效果如下

    子组件向父组件传值

    1. 子组件用$emit()触发事件

    2. $emit() 第一个参数为 自定义的事件名称 第二个参数为需要传递的数据

    3. 父组件用v-on 监听子组件的事件

    • 接下来我们简单做个列子,在组件中插入两个按钮,当点击按钮时,变化父容器中的字体的大小

    兄弟组件之间传值

    1. 兄弟组件之间传值需要借助于事件中心,相当于要一个中间件

    2. 数据传递方:通过一个事件触发事件中心的$emit(方法名,传递的参数)函数

    3. 数据接收方:通过mounted(){}钩子方法,触发事件中心的#on()方法

    4. 销毁事件中心后就无法在完成交互, 事件中心.off()方法

    我们就简单实现一下两个组件,两兄弟互相给对方送钱的情景

    • 当然bug是不能少的,总得而言兄弟组件之间传值就是这个一个过程

    • 当然是可以传多个值的 ,用逗号连接即可

    Vuex的基本使用

    • 这里就不做口水话介绍了,官方文档很清晰:Vuex官方文档

    • 就贴一个代码笔记在这儿吧

    1. 安装依赖,vue ,当然我是通过vue ui创建的项目,在创建时就已经添加了

    2. 创建独立的文件,引入Vuex,并创建store对象(代码下面附上)

    3. 将创建好的store对象挂载在vue的实例中(代码下面附上)

    • 下面我们就通过一个小Demo来简单联系一下:

    • 创建独立文件,引入vuex,并创建store对象

    • 在main.js中将其挂载到vue实例上

    • 实列代码,都有两种方式 实现,我都去分开了,每个实列是一种用法

    • 在App.vue中把组件导进去,直接使用即可看效果

    • 最后的效果大致这样

    组件插槽 :<slot>

    • 组件在没有安排插槽的时候,引入组件后在组件标签内填充数据是不起任何作用的

    • 当我们在组件中声明了slot后,组件标签内的填充数据会传递到组件模版中

    匿名插槽

    实名插槽

    • 我们在组件模版中定义三个大的标签:header main footer

    • 其中两个我们想使用插槽功能来完善模版

    • 当我们引入模版后,我们在组件标签中,用如下格式,将值传递进模版

    作用域插槽

    • 刚开始我还有点难以理解这啥玩意儿,后面才想明白,这其中涉及到的就是创建组件中的值,可以拿到组件标签内来使用,可以做一些判断啥的

    • 可以实现父组件对子组件的加工处理

    • 渲染结果如下:

      • 插值表达式显示了一下 {{flag}},可见flag就是被赋值了一个json对象,里面key和value均为模版定义的

    .

     

  • 相关阅读:
    链表 2.4
    链表 2.3
    链表 2.2
    链表 2.1
    数组与字符串 1.8
    数组与字符串 1.7
    数组与字符串 1.6
    CounterBreach安装测试的全部过程
    数据库管理软件 Navicat Premium12 破解步骤
    webgote的例子(6)SQL注入(盲注)
  • 原文地址:https://www.cnblogs.com/msi-chen/p/12664140.html
Copyright © 2011-2022 走看看