• Vue-2.2组件通信


    组件通信

    指组件与组件之间的数据传递

    组件的数据是独立的,无法直接访问其他组件的数据。

    想用其他组件的数据->组件通信

    组件关系分类

    1.父子关系

    通信:props和$emit

    1)父组件通过props将数据传递给子组件

    prop定义:组件上注册的一些自定义属性
    prop作用:向子组件传递数据
    特点:

    ·可以传递任意数量的prop

    ·可以传递任意类型的prop

    props校验

    作用:为组件的prop指定验证要求,不符合要求,控制台就会有错误提示->帮助开发者,快速发现错误。

    语法:

    ·类型校验

    props:{校验的属性名:类型},//判断传过来的数据类型是否正确

    ·非空校验·默认值·自定义校验

    1. props:{
    2. 校验的属性名:{
    3. type:类型,//Number String Boolean...
    4. required:true,//是否必填
    5. default:默认值,//默认值,一般写0
    6. validator(value){
    7. //自定义校验逻辑
    8. //console.error('')提示错误原因
    9. return 是否通过校验
    10. }
    11. }
    12. }
    prop&data、单向数据流

    共同点:都可以给组件提供数据

    区别:

    ·data的数据都是自己的->随便改

    ·prop的数据都是外部的->不能直接改,要遵循单项数据流

    单向数据流:父组件的prop更新,会单向向下流动,影响到子组件。

    谁的数据谁负责。

    2)子组件利用$emit通知父组件修改更新

    注意:子组件直接写到@click上的语句为$emit(),不要加this

    2.非父子关系(拓展)

    通信:provide&inject和eventbus

    1)event bus事件总线

    作用:非父子组件之间,进行简易信息传递。(复杂场景->Vuex)

    1.创建一个都能访问到的事件总线(空Vue实例)

    在src文件夹下,创建utils(工具)/EventBus.js

    1. import Vue from 'vue'
    2. const Bus=new Vue()
    3. export default Bus

    2.A组件(接收方),监听Bus实例的事件

    import Bus from '../utils/EventBus'
    1. created(){
    2. Bus.$on('sendMsg',(msg)=>{
    3. this.msg=msg
    4. })
    5. }

    3.B组件(发送方),触发Bus实例的事件

    import Bus from '../utils/EventBus'
    Bus.$emit('sendMsg','这是一个消息')
    2)provide&inject

    作用:跨层级共享数据

    1.父组件provide提供数据

    1. export default{
    2. provide(){
    3. return{
    4. //普通类型【非响应式】
    5. color:this.color,
    6. //复杂类型【响应式】--推荐
    7. userInfo:this.userInfo,
    8. }
    9. }
    10. }

    2.子/孙组件inject取值使用

    1. export default{
    2. inject:['color','userInfo']
    3. }

    通用通信:Vuex(适合复杂业务场景)

  • 相关阅读:
    GDB调试技巧汇总
    Hydra参数
    马斯克搞脑机得“开瓢”?MIT 早在研究「挂耳式耳机」,戴上=“把整个互联网装进脑子”!...
    SSM图书馆电子文件资源管理系统毕业设计-附源码091426
    Vue3.0项目——打造企业级音乐App(二)图片懒加载、v-loading指令的开发和优化
    ThreadLocal
    pytorch中使用多GPU并行训练
    React富文本编辑器开发(十二)插件
    【C++】bitset介绍与用法讲解
    (33)STM32——485实验笔记
  • 原文地址:https://blog.csdn.net/weixin_46479909/article/details/133769969