该文章主要记录在工作中经常使用的小知识点、注意点、遇到的小问题
vue父子组件传值,调用方法
父传子值,父调用子方法
父组件向子组件传值(引入子组件→在引入的子组件绑定需要传送的值→子组件props接收)
<!-父组件---> <template> <div> <child :msg="msg"></child> </div> </template> <script> import child from './child' export default { components:{ child } data () { return { msg: '父组件的值' } } } <!-子组件---> <template> <div></div> </template> <script> export default { props:{ msg:{ type:String, default:'' } } mounted(){ console.log(this.msg) } }
父组件调用子组件方法(引入子组件→给注册的子组件注册引用信息→调用子组件方法)
<!-父组件---> <template> <div> <child ref="child" ></child> </div> </template> <script> import child from './child' export default { components:{ child } mounted(){ this.$refs.child.getData() // 调用 } } <!-子组件---> <template> <div></div> </template> <script> export default { methods:{ getData(){ console.log('父组件调用了我的方法') } } }
子传父值,子调用父方法
子组件向父组件传值(方法一)
<!-父组件---> <template> <div> <child @func="getData"></child> </div> </template> <script> import child from './child' export default { components:{ child } mounted(){ getData(val){ console.log(val) //我是子组件的数据 } } } <!-子组件---> <template> <div></div> </template> <script> export default { data(){ msg: "我是子组件的数据", } mounted(){ //func: 是父组件指定的传数据绑定的函数,this.msg:子组件给父组件传递的数据 this.$emit('func', this.msg) } }
子组件向父组件传值(方法二)
父组件直接获取子组件里的data数据 this.$ref.child.msg
子组件调用父组件方法(方法一)
子组件直接通过this.$parent.event调用 //event为需要调用的父组件的事件
子组件调用父组件方法(方法二)
子组件里用$emit向父组件触发一个事件,父组件监听这个事件就行了(与子组件向父组件传值(方法一)一致)
子组件调用父组件方法(方法三)
父组件把方法传入子组件中,在子组件里直接调用这个方法 <!-父组件---> <template> <div> <child :getData="getData"></child> </div> </template> <script> import child from './child' export default { components:{ child } methods:{ getData(){ console.log('这是父组件的方法') } } } <!-子组件---> <template> <div></div> </template> <script> export default { props:{ getData:{ type:Function, default:null } } mounted(){ if(this.getData){ this.getData() } } }
热门文章
- vue 修饰符
- 厦门同安宠物领养中心地址在哪里(同安宠物店哪家好)
- es6操作数组方法
- 「2月23日」最高速度20.5M/S,2025年Clash/V2ray/Shadowrocket/SSR每天更新免费订阅地址分享
- 动物防疫方针是指什么内容(动物防疫实施办法)
- 「1月23日」最高速度19M/S,2025年Shadowrocket/Clash/SSR/V2ray每天更新免费订阅地址分享
- 动物医院取什么名字好听一点(动物医院牌子)
- 免费领养动物的app(免费领养宠物的平台)
- 「1月18日」最高速度20.3M/S,2025年Clash/Shadowrocket/SSR/V2ray每天更新免费订阅地址分享
- React+ts 中定义事件声明类型