请问 是否支持调用子组件方法呢,比如已经嵌入了React组件。 想再vue中调用React组件的方法。
随便写了试了下, Vue 中 可以集成React组件。 但我试了下 React 内部通过 forwardRef 与 useImperativeHandle 暴漏了 外部调用的test()方法。 正常在React 调用子组件 直接 xxxRef.test() 即可 但我在vue中 拿到vue ref, 然后 ref.test() /. ref.reactRef.test(). 以及 ref.reactInstance 都 没找到 test方法并调用成功。。
@wangyibai 给你个例子
<template>
<ReactCom ref="reactCom"/>
</template>
<script>
import { applyReactInVue } from 'vuereact-combined'
import ReactTest from '../../react_app/cc'
const ReactCom = applyReactInVue(ReactTest)
export default {
mounted () {
console.log(this.$refs.reactCom.reactRef)
},
components: {
ReactCom
}
}
</script>
直接获取vue组件的ref,拿到的是桥接容器的ref,需要继续获取reactRef可以拿到React的ref
ok, 我就是这么用的。 但是一直不行。
后来 刚刚试出来了。 现在这个库 目前貌似不支持memo(forwardRef(...))的方式 组件
我直接 forwardRef(...) 一次高阶是可以的
可以试下
@wangyibai 好,如果是这个表现,可能是个bug
@wangyibai 我测了一下,没有问题, memo(forwardRef())也可以获取ref
React组件如下:
import React, {forwardRef, memo, useImperativeHandle} from 'react'
export default memo(forwardRef(function (props, ref) {
useImperativeHandle(ref, () => ({
abc() {
return 'abc'
}
}))
return <div>abc</div>
}))
然后通过vue组件ref种的reactRef可以获取到react组件的ref种的abc方法
好的, 我回头再检查下。