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

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

4B参数秒杀GPT-3.5:MiniCPM 3.0惊艳登场!

​ 面壁智能 在 AI 的世界里,总有那么几个时刻让人惊叹不已。面壁智能推出的 MiniCPM 3.0,这个仅有4B参数的"小钢炮",正在以惊人的实力挑战着 GPT-3.5 这个曾经的AI巨人。 MiniCPM 3.0 MiniCPM 3.0 MiniCPM 3.0 目前的主要功能有: 长上下文功能:原生支持 32k 上下文长度,性能完美。我们引入了

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能