组件调用方式与vue类似,但是还是有一些区别,记录一下。
父组件传值给子组件
1 2 3 4 5 6 7 8
| <child-name title="title"/>
props:{ title:'' } <view>{{title}}</view>
|
子组件调用父组件方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| props:{ onYourMethod:()=>({}) } methods:{ onTapSubmit(){ this.props.onYourMethod('from child') } }
<child-name onTapSubmit="fatherMethod" />
fatherMethod(e){ console.log(e) }
|
父组件调用子组件方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <child-name ref='childRefName' />
childRefName(ref){ this.ref=ref } youFun(){ this.ref.childMethod('from father') }
methods:{ childMethod(e){ console.log(e) } }
|
使用ref时需要开启component2 不然ref不会生效
兄弟组件相互调用
大致思路是这样的:组件A -> 父组件 -> 组件B
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| props:{ onEmitToBrother:()=>({}) } methods:{ onTapAButton(){ this.props.onEmitToBrother('refB','comBFun','from A') }, comAFun(e){ console.log(e) } }
props:{ onEmitToBrother:()=>({}) } methods:{ onTapBButton(){ this.props.onEmitToBrother('refA','comAFun','from B') }, comBFun(e){ console.log(e) } }
<A-name onEmitToBrother="onEmitToBrother" ref="refA" /> <B-name onEmitToBrother="onEmitToBrother" ref="refB" />
refA(ref){ this.refA=ref } refB(ref){ this.refB=ref } onEmitToBrother(refName,funName,args){ this[refName][funName](args) }
|
如果有其他更好的方案 欢迎补充