React hook 形式 v7 函数组件无法给出引用。尝试访问此引用将失败。你的意思是使用 React.forwardRef()

作者:编程家 分类: typescript 时间:2025-08-20

使用 React.forwardRef() 创建可转发引用的函数组件

在 React 中,我们经常使用函数组件来构建用户界面。然而,在某些情况下,我们可能需要在函数组件中使用引用。然而,在 React Hook 形式 v7 中,函数组件无法直接给出引用。这意味着尝试访问此引用将失败。

幸运的是,React 提供了一个名为 React.forwardRef() 的函数,它可以帮助我们在函数组件中使用引用。通过使用 React.forwardRef() ,我们可以创建可转发引用的函数组件。

使用 React.forwardRef() 的基本语法如下所示:

const MyComponent = React.forwardRef((props, ref) => {

// 组件的代码

});

在上述代码中,我们定义了一个名为 MyComponent 的函数组件,它接受两个参数:props 和 ref。props 是传递给组件的属性,而 ref 则是一个引用对象。我们可以在组件内部使用这个引用对象来引用组件的 DOM 元素或其他 React 组件。

**示例代码:**

让我们通过一个示例来演示如何使用 React.forwardRef() 创建可转发引用的函数组件。

首先,我们将创建一个名为 FancyButton 的组件,它是一个简单的按钮组件。在该组件内部,我们会使用传递的 ref 引用来设置按钮的样式。

jsx

import React from 'react';

const FancyButton = React.forwardRef((props, ref) => {

return (

);

});

export default FancyButton;

在上述代码中,我们使用 React.forwardRef() 创建了 FancyButton 组件。我们将传递的 ref 引用设置为按钮的 ref 属性,以便我们可以在组件外部访问到该按钮的引用。

在父组件中,我们可以像使用普通的 DOM 元素一样使用 FancyButton 组件,并且可以通过 ref 属性获取到 FancyButton 的引用。

jsx

import React, { useRef } from 'react';

import FancyButton from './FancyButton';

const ParentComponent = () => {

const buttonRef = useRef(null);

const handleClick = () => {

buttonRef.current.style.backgroundColor = 'red';

};

return (

Click me

);

};

export default ParentComponent;

在上述代码中,我们在 ParentComponent 组件中使用了 FancyButton 组件,并通过 ref 属性将 FancyButton 的引用传递给 buttonRef。

在 handleClick 函数中,我们通过访问 buttonRef.current 可以获取到 FancyButton 的引用,并通过修改样式来改变按钮的背景颜色。

**使用 React.forwardRef() 创建可转发引用的函数组件**

通过使用 React.forwardRef() ,我们可以在函数组件中使用引用。这为我们提供了更大的灵活性和控制力,使我们能够更好地管理组件的状态和行为。

在本文中,我们学习了如何使用 React.forwardRef() 创建可转发引用的函数组件,并通过示例代码展示了具体的用法。希望这能帮助你更好地理解和使用 React 中的引用机制。