该文章主要记录在工作中经常使用的小知识点、注意点、遇到的小问题
父组件向子组件传值(引入子组件→在引入的子组件绑定需要传送的值→子组件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() } } }