reactjs - 使用 `useImperativeHandle` 导出 ref
问题描述
我有 2 个以下文件,称为A.js
和B.js
.
A.js
import RefFile from './components/RefFile'
const A = forwardRef((props, ref) => {
let refRefFile = useRef(null)
...
useImperativeHandle(ref, () => ({
refRefFile
}))
return (
...
<RefFile ref={refRefFile} />
...
)
}
B.js
import A from './A'
const B = () => {
let refA = useRef(null)
const test = () => {
refA?.refRefFile()
}
return (
<A ref={refA} />
)
}
我可以添加 refRefFile
来useImperativeHandle
从 B 调用它吗?我认为这样做对我来说会更舒服。或者有没有其他方法可以解决这个问题?谢谢!
解决方案
你可以做这样的事情。
Let,foo()
是您的RefFile
.
A.js
import RefFile from './components/RefFile'
const A = forwardRef((props, ref) => {
let refRefFile = useRef()
...
const accessRefFileFoo = () => refRefFile.foo()
useImperativeHandle(ref, () => ({
accessRefFileFoo
}))
return (
...
<RefFile ref={refRefFile} />
...
)
}
B.js
import A from './A'
const B = () => {
let refA = useRef()
const test = () => {
refA.accessRefFileFoo()
}
return (
<A ref={refA} />
)
}
在这里,您调用名为的函数foo()
,它是RefFile
您的组件中的一个函数B
。像这样,希望你能随心所欲地处理它。如果您有任何问题,请随时在此处发表评论。
推荐阅读
- php - 将查询结果发送到打印机
- angular - 登录提交用 url 中的电子邮件和密码刷新页面,使用按钮单击不在 onLogin() 方法中发布电子邮件和密码
- linux - Linux,如何反汇编系统调用
- c - 如何将值 0x00 放入 c 中动态分配的 char* 数组?
- android - 从 Retrofit 向 ListView 填充空白数据
- rust - 错误:类型不匹配:预期 `usize`,发现 `i64` 带有 `Vec
` - python - 如何在 numpy 中快速找到匹配某个条件的最后一个元素?
- javascript - 合并2个数组的对象
- spring - 面临@PathParam 注解的问题
- python - python程序不起作用