Vue父组件给子组件传参数_vue父组件传参给子组件_陌一一
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>
结果:
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
相关文章
- uniapp视频压缩踩坑记录_ㄏ、Forget?_uniapp视频压缩
- Unity C# 读取安卓persistentDataPath目录中的json文件_破道三十六_unity 安卓 persistentdatapath
- 【TTS】uni-app语音播报app开发 / MT-TTS安卓原生自带语音合成插件(免费无限次)_coderYYY_tts插件
- 【Android进阶】7、Android 各 SDK 版本的区别与兼容_呆呆的猫_sdk版本
- 【错误记录】Android Studio 编译报错 ( The minCompileSdk (33) specified in a dependency‘s AAR metadata META-I )
- 史上最全Android性能优化方案解析_嘴巴吃糖了_android 性能优化
- MQTT介绍,服务器(EMQ X)搭建,客户端(mqtt-spy,安卓)使用,java编程示例_西晋的no1_emqx 客户端
- Drozer的安装与使用 | Android逆向工具_?鲕_drozer
- 深入学习Android_Lotay.
- Flutter利用ScrollController获取、控制滚动组件的滚动位置_亦可追寻_flutter 获取组件位置
- Android FloatingActionButton(浮动动作按钮的动画 ) 使用详情_DT向着太阳迎着光_android floatingactionbutton
- 安卓 apk 包重新签名解决方案_半身风雪_apk 重签名
- Android应用离线中文语音识别PocketSphinx (免费哦~)_阿阿杰杰_android 离线语音识别
- Android Material Design UI方案使用讲解_luo_boke_android material
- Android 实现GIF播放的几种方式_假装你是大灰狼_android 播放gif
- 【2022-New】Flutter doctor 检测报错,Android toolchain - develop for Android devices_Min_niML_android toolc