当前位置: 首页 > article >正文

Vue 组件通信 - 父传子

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue 组件通信 - 父传子

目录

组件通信

父传子示例1

封装导航

右侧按钮显示与隐藏

属性验证

父传子示例2

总结


组件通信

父传子示例1

封装导航

组件父传子示例,通过对导航封装为组件来做演示。

首先封装一个全局的导航组件,接收一个myname参数。

示例如下:

<script src="../lib/vue.js"></script>
<div id="box">
    <div style="background-color: yellow">根组件标题</div>
    <navbar myname="首页"></navbar>
    <navbar myname="分类"></navbar>
</div>
<script>
    // 定义一个全局组件
    Vue.component("navbar", {
        props: ["myname"], // 接收myname属性, this.myname
        template: `<div>
            <button>左</button>
            <span>{{myname}}</span>
            <button>右</button>
        </div>`
    })
    let vm = new Vue({
        el:"#box",
        data:{}
    })
</script>

右侧按钮显示与隐藏

通过指令控制右侧按钮显示与隐藏,需使用动态绑定进行传值;

否则绑定的值不是布尔值,而是字符串。

示例如下:

<div id="box">
    <div style="background-color: yellow">根组件标题</div>
    <navbar myname="首页" :myright="true"></navbar>
    <navbar myname="分类" :myright="false"></navbar>
</div>
<script>
    // 定义一个全局组件
    Vue.component("navbar", {
        props: ["myname", "myright"], // 接收myname属性, this.myname
        template: `<div>
            <button>左</button>
            <span>{{myname}}</span>
            <button v-show="myright">右</button>
        </div>`
    })

属性验证

导航组件使用中,需要对组件传递的属性值进行验证。

示例如下:

Vue.component("navbar", {
    //props: ["myname", "myright"], // 接收myname属性, this.myname
    props : {
        myname : String,
        myright: Boolean
    }, // 接收myname myright属性, 属性验证
    template: `<div>
        <button>左</button>
        <span>{{myname}}</span>
        <button v-show="myright">右</button>
    </div>`
})

当传递的属性值,不符合属性设置类型时,控制台会提示错误。

截图如下:

默认属性

还可以设置组件属性的默认属性值。

示例如下:

props : {
    myname : {
        type: String,
        default: ""
    },
    myright: {
        type: Boolean,
        default: true
    }
}, // 接收myname myright属性, 属性验证, 默认属性

父传子示例2

通过Vue全局变量传给组件属性。

示例如下:

<div id="box">
    <div style="background-color: yellow">根组件标题</div>
    <navbar myname="首页" :myright="false" :myparent="parent"></navbar>
    <navbar myname="分类" :myparent="parent"></navbar>
</div>

Prop中定义接收该值,然后在该组件中应用。

示例如下:

<script>
    // 定义一个全局组件
    Vue.component("navbar", {
        //props: ["myname", "myright"], // 接收myname属性, this.myname
        props : {
            myname : {
                type: String,
                default: ""
            },
            myright: {
                type: Boolean,
                default: true
            },
            myparent: {
                type:String,
                default:""
            }
        }, // 接收myname myright属性, 属性验证, 默认属性
        template: `<div>
            <button>左</button>
            <span>{{myname}}--{{myparent}}</span>
            <button v-show="myright">右</button>
        </div>`
    })
    let vm = new Vue({
        el:"#box",
        data:{
            parent: "这是一首简单的小情歌"
        }
    })
</script>

总结

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue 组件通信 - 父传子


http://www.kler.cn/a/573843.html

相关文章:

  • 阿里 DataWorks:数据治理、安全中心、数据质量核心功能梳理
  • 3.激活函数:神经网络中的非线性驱动器——大模型开发深度学习理论基础
  • 访问grafana的api
  • 人工智能之数学基础:矩阵的秩
  • K8S学习之基础八:pod的状态和重启策略
  • Unity插件-Mirror使用方法(五)组件介绍(​Network Identity)
  • 企业防盗版新招:SPN 沙盒安全上网解决方案
  • 通过RK3588的cc-linaro-7.5.0交叉编译器搭建QT交叉编译环境QtCreator(无需编译QT源码)
  • 杰和科技工业整机AF208|防尘+静音+全天候运行
  • 10.RabbitMQ集群
  • 战略合作升级 | 大势智慧携手广西地测院,共绘智慧测绘新蓝图
  • http的post请求不走http的整个缓存策略吗?
  • C语言--预处理详解
  • 数据结构秘籍(四) 堆 (详细包含用途、分类、存储、操作等)
  • 服务器中常见的冗余技术有哪些?
  • Sentence BERT相似度计算有误,匹配有误差解决方法
  • 全国现代物流科技应用大会暨城郊大仓基地高质量建设运营服务高峰论坛
  • 数据安全的守护者:备份文件的重要性及自动化备份策略
  • 《2025软件测试工程师面试》功能测试篇
  • Java常用正则表达式(身份证号、邮箱、手机号)格式校验