Vue父组件给子组件传参数

2023-11-21 16:59

本文主要是介绍Vue父组件给子组件传参数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 别人在调用我们写的组件时,虽然要实现的结构一样,但如果别人想改一下显示的内容或者之类的,该怎么做呢;
  • 这时候就要提到“传参数”这个词了,别人可以通过传不同的参数,来实现他们具体的结构;

传参之前的代码:

<body><div id="box"><navbar></navbar><navbar></navbar></div><script>Vue.component("navbar",{template:`<div><button>left</button><span>nav</span><button>right</button></div>`})//根组件new Vue({el: "#box",data: {},})</script>
</body>

结果:

调用了组件两次,但是因为组件是固定的,所以里面的内容显示的都是“nav”,那如果想显示不同的内容呢,就要“传参数”了;

传参之后的代码:

<body><div id="box"><navbar myname="电影" :myright="false"></navbar><navbar myname="影院" ></navbar></div><script>Vue.component("navbar",{props:{myname:{type:String,default:""},myright:{type:Boolean,default:true}},//接受myname属性、属性验证、设置默认属性template:`<div><button>left</button><span>{{myname}}</span><button v-show="myright">right</button></div>`})//根组件new Vue({el: "#box",data: {},})</script>
</body>

结果:

  • 父组件把一个字符串传过去了,把一个布尔值传过去了; 
  • 这个属性是放在子组件里面的,在调用的时候父组件传给子组件一个属性,然后子组件接收,使用。在代码中属性是:myname、myright;
  • 后面的参数写的是属性值,调用者根据自己想显示的内容,在这里规定;
  • 然后子组件接收这个属性,在props里,接收格式为:
  • 将属性放在对象里接收,每个属性也是一个对象形式,每个属性里面要进行“属性验证”:type:类型值,也就是说明这个属性值的数据类型;还要设置默认值default
  • 进行数据验证的好处是:如果调用的时候属性值不小心写错类型了,或者用错了,比如我们想传一个布尔类型的,但是我们写成字符串类型的了,进行数据验证的话,如果我们调用写的属性值类型和下面属性定义的类型不一致,就会报错,如果没加数据验证,是不会报错的;
  • 加默认值的好处是:如果有些属性不想加,可以设置默认值,不设置的话默认就会是undefined;
  • 当然也可以不用设置默认值和数据验证,就接收属性,想下面这样用数组接收:
  • props:["myname,myright"]
  • 但是最完整的属性定义还是:不仅接收属性,还对属性进行校验,传一个对象过去, 还设置默认值; 
  • 这就是父传子;父组件传一个属性给子组件,子组件接收,使用;
  • 调用组件,传的参数不一样,结果也会不一样;
  • 这个属性名不是固定的,可以自己起,但是要保证子组件接收和使用的时候要跟属性名保持一致;
  • 看组件是谁的孩子,就把该组件放在谁的模板里去用;

有一点需要注意:

myright属性是控制右边那个按钮显示不显示的; 

看上面这个代码发现,myright前面加了“:”,原因是不加的话,后面双引号引起来的就是字符串,但是其实我们想传的是布尔值,所以要在前面加上“:”; 

加了“:”那等号后面就是js的代码,动态绑定,就传的是布尔值;不加的话就是直接当字符串用了;

只要在父组件里的div里,子组件是可以用父组件的状态:

  • 凡是放在<div id="#box>里的东西,例如<navbar>/<button>/<sidebar>都可以访问到父组件的状态:isShow,但仅限于在<div id="#box>里面,定义子组件里是访问不了的。

子组件可以更改父组件的状态值吗:

  • 父组件传给子组件的状态,子组件可以重新给它赋值,但是不要去修改,会造成数据流紊乱。
  • 父组件传给子组件的属性,只有父组件可以重新传,但不允许子组件随意修改。
  • 每个组件内部的状态,可以随意修改;

案例二:父传子loop属性,在标签上指定loop的值:

父组件:

<template><div><film-swiper :loop="false">//父传子loop属性,布尔值是变量要动态绑定<film-swiper-item>1111</film-swiper-item><film-swiper-item>2222</film-swiper-item><film-swiper-item>3333</film-swiper-item></film-swiper><film-header></film-header><!-- 路由容器 --><router-view></router-view></div>
</template>

子组件:接收这个loop属性,并使用:

export default {
//接收loop属性props: {loop: {typeof: Boolean,default: true}},mounted () {new Swiper('.swiper', {// 循环模式选项loop: this.loop, //使用是this.loop// 如果需要分页器pagination: {el: '.swiper-pagination'}})}
}

使用父组件传来的属性当做变量值是:this.loop

这篇关于Vue父组件给子组件传参数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/403748

相关文章

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

前端CSS Grid 布局示例详解

《前端CSSGrid布局示例详解》CSSGrid是一种二维布局系统,可以同时控制行和列,相比Flex(一维布局),更适合用在整体页面布局或复杂模块结构中,:本文主要介绍前端CSSGri... 目录css Grid 布局详解(通俗易懂版)一、概述二、基础概念三、创建 Grid 容器四、定义网格行和列五、设置行

SpringMVC获取请求参数的方法

《SpringMVC获取请求参数的方法》:本文主要介绍SpringMVC获取请求参数的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下... 目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@

前端下载文件时如何后端返回的文件流一些常见方法

《前端下载文件时如何后端返回的文件流一些常见方法》:本文主要介绍前端下载文件时如何后端返回的文件流一些常见方法,包括使用Blob和URL.createObjectURL创建下载链接,以及处理带有C... 目录1. 使用 Blob 和 URL.createObjectURL 创建下载链接例子:使用 Blob

Vuex Actions多参数传递的解决方案

《VuexActions多参数传递的解决方案》在Vuex中,actions的设计默认只支持单个参数传递,这有时会限制我们的使用场景,下面我将详细介绍几种处理多参数传递的解决方案,从基础到高级,... 目录一、对象封装法(推荐)二、参数解构法三、柯里化函数法四、Payload 工厂函数五、TypeScript

SpringQuartz定时任务核心组件JobDetail与Trigger配置

《SpringQuartz定时任务核心组件JobDetail与Trigger配置》Spring框架与Quartz调度器的集成提供了强大而灵活的定时任务解决方案,本文主要介绍了SpringQuartz定... 目录引言一、Spring Quartz基础架构1.1 核心组件概述1.2 Spring集成优势二、J

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

SpringBoot利用@Validated注解优雅实现参数校验

《SpringBoot利用@Validated注解优雅实现参数校验》在开发Web应用时,用户输入的合法性校验是保障系统稳定性的基础,​SpringBoot的@Validated注解提供了一种更优雅的解... 目录​一、为什么需要参数校验二、Validated 的核心用法​1. 基础校验2. php分组校验3