React-Hooks之useImperativeHandle使用,让父组件操纵子组件的状态和方法

简介: useImperativeHandle是react官方为了简便我们的ref操作,同时还可以让子组件返回给父组件自身的状态和方法去调用

您好,如果喜欢我的文章,可以关注我的公众号「量子前端」,将不定期关注推送前端好文~

useImperativeHandle是react官方为了简便我们的ref操作,同时还可以让子组件返回给父组件自身的状态和方法去调用

useRef将ref绑定到某个子组件标签上,用以获取整个子组件的方法和参数
useImperativeHandle: 可以自定义暴露给父组件的方法或者变量

父组件

import React, {
    useState, useRef } from 'react'
import ChildList from './ChildList'

export default () => {
   
    let parentRef = useRef(null)
    const [name, setName] = useState('li')
    return <div>
        <ChildList parentRef={
   parentRef} name={
   name}></ChildList>
        <button onClick={
   () => {
   
            console.log("parentRef", parentRef)
        }}>获取子组件</button>
    </div>
}

子组件

import React, {
    useImperativeHandle, forwardRef } from 'react'

export default forwardRef((props, ref) => {
   
    console.log("ref", ref)
    useImperativeHandle(ref, () => {
   
        return {
   
            childFn
        }
    })
    console.log(ref)
    const childFn = () => {
   
        console.log('子组件方法')
    }
    return <div>
        <div ref={
   ref} />
    </div>
})

用了ref的桥梁就这样就可以在父组件中控制子组件了,而不仅仅只是子随父渲染了。

目录
相关文章
|
2月前
|
前端开发
|
2月前
|
Android开发
jmessage-react-plugin的正确引入方法
jmessage-react-plugin的正确引入方法
15 1
|
3月前
|
前端开发 JavaScript 开发者
请详细介绍React挂载阶段的方法。
请详细介绍React挂载阶段的方法。
63 9
|
4月前
|
前端开发 JavaScript
React 组件生命周期方法详解
【8月更文挑战第30天】
57 5
|
3月前
封装react-antd-table组件参数以及方法如rowSelection、pageNum、pageSize、分页方法等等
文章介绍了如何封装React-Antd的Table组件,包括参数和方法,如行选择(rowSelection)、页码(pageNum)、页面大小(pageSize)、分页方法等,以简化在不同表格组件中的重复代码。
77 0
|
4月前
|
前端开发 JavaScript API
学习 React 的方法
【8月更文挑战第26天】学习 React 的方法
41 1
|
4月前
|
前端开发 JavaScript 开发者
React生命周期方法完全指南:深入理解并高效应用每个阶段的钩子——从初始化到卸载的全方位解析
【8月更文挑战第31天】本文详细介绍了React组件生命周期方法,包括初始化、挂载、更新和卸载四个阶段的关键钩子。通过探讨每个阶段的方法,如`componentDidMount`和`componentWillUnmount`,帮助开发者在正确时机执行所需操作,提升应用性能。文章还提供了最佳实践,指导如何避免常见错误并充分利用最新钩子。
112 0
|
4月前
|
前端开发 JavaScript 开发者
React 中的生命周期方法是什么?
【8月更文挑战第31天】
58 0
|
5月前
|
前端开发 Scala
Scala并发编程的react、loop方法详解
在这个例子中,`MyActor`会无限循环接收和处理消息。当收到一个字符串消息时,它会打印出"Received: "加上消息内容。如果收到其他类型的消息,它会打印"Unknown message"。
30 1
|
1月前
|
前端开发 JavaScript 开发者
颠覆传统:React框架如何引领前端开发的革命性变革
【10月更文挑战第32天】本文以问答形式探讨了React框架的特性和应用。React是一款由Facebook推出的JavaScript库,以其虚拟DOM机制和组件化设计,成为构建高性能单页面应用的理想选择。文章介绍了如何开始一个React项目、组件化思想的体现、性能优化方法、表单处理及路由实现等内容,帮助开发者更好地理解和使用React。
77 9