Javascript Kotlinx html参考事件

Javascript Kotlinx html参考事件,javascript,html,reactjs,kotlin,Javascript,Html,Reactjs,Kotlin,我已经注意到代码库中的以下函数,它使用,并且很难完全理解: private fun <E : HTMLElement> Tag.xrefImpl(prop: KMutableProperty0<E?>) = this.consumer.onTagEvent(this, "ref", { prop.set(it.asDynamic()) }) private-fun-Tag.xrefImpl(prop:KMutableProperty0)= this.consu

我已经注意到代码库中的以下函数,它使用,并且很难完全理解:

private fun <E : HTMLElement> Tag.xrefImpl(prop: KMutableProperty0<E?>) = 
    this.consumer.onTagEvent(this, "ref", { prop.set(it.asDynamic()) })
private-fun-Tag.xrefImpl(prop:KMutableProperty0)=
this.consumer.onTagEvent(this,“ref”{prop.set(it.asDynamic())})

据我在谷歌上了解,
asDynamic
是一种kotlin js方法,它只会抑制类型检查。好的,但其余部分还不清楚。对其内部内容不是很详细,即
consumer
ref
onTagEvent
。最重要的是,为什么参数类型是
KMutableProperty0

这段代码使用了kotlin惯用法和高级功能,因此最好一步一步地检查它

  • 首先,
    xRefImpl
    标记
    的扩展函数,因此有了
    标记
    实例,就可以调用这个新方法
  • 其次,
    ref
    实际上是一个react属性,它允许获取对组件的引用。下面是一个来自中国的例子
用法示例:

<input type="text"
       ref={(input) => { this.textInput = input; }} />
如果去掉所有kotlin和react习惯用法,代码
this.consumer.onTagEvent(this,“ref”、{prop.set(it.asDynamic())}
只执行
prop=this.getComponent()
。因此,该方法的目的是获取部件参考

最后,由于参数是
KMutableProperty0
,因此它允许将组件绑定到字段,如下所示

xrefImpl(this::component)
xrefImpl(this::component)