React -高级指引 - Refs转发
admin
2024-03-01 13:48:03
0

Refs转发

概述

  • 将ref自动地通过组件传递到子组件的技巧
  • 父组件可以通过ref操作子组件,直接使用子组件的DOM

转发 refs 到 DOM 组件

  • 渲染原生 DOM 元素 button 的 FancyButton 组件(子组件)
function FancyButton(props) {return ()
}
  • Ref 转发是一个可选特性,其允许某些组件接收 ref,并将其向下传递给子组件
//子组件
const FancyButton = React.forwardRef((props, ref) => (
))//父组件
//可以直接获取 DOM button 的 ref:
const ref = React.createRef();
ref}>Click me!;//这样,在父组件中可以直接使用DOM button
  • 以下是对上述示例发生情况的逐步解释:
    • 通过调用 React.createRef 创建了一个 React ref 并将其赋值给 ref 变量
    • 指定 ref 为 JSX 属性,将其向下传递给 FancyButton
    • React传递ref给forwardRef作为其第二个参数
    • 向下转发ref参数到button,并将其指定为JSX属性
    • 当ref挂载完成,ref.current将指向button DOM节点

组件库维护者的注意事项

  • 当使用forwardRf时,应将其视为一个新的主版本

在高阶组件中转发 refs

在 DevTools 中显示自定义名称

  • 下面的组件将在DevTools中显示为“ForwardRef”
const WrappedComponent = React.forwardRef((props, ref) => {return ...props} forwardedRef={ref} />;
})
  • 如果命名了渲染函数,DevTools 也将包含其名称(例如 “ForwardRef(myFunction)”)
const WrappedComponent = React.forwardRef(function myFunction(props, ref) {return ...props} forwardedRef={ref} />;}
)
  • 设置函数的 displayName 属性来包含被包裹组件的名称
function logProps(Component) {class LogProps extends React.Component {// ...}function forwardRef(props, ref) {return ...props} forwardedRef={ref} />;}// 在 DevTools 中为该组件提供一个更有用的显示名。// 例如 “ForwardRef(logProps(MyComponent))”const name = Component.displayName || Component.name;forwardRef.displayName = `logProps(${name})`;return React.forwardRef(forwardRef);
}

相关内容

热门资讯

透视辅助(红龙扑克)其实真的有... 透视辅助(红龙扑克)其实真的有挂(辅助挂)德州软件辅助计算(详细透明挂教程)1、让任何用户在无需德州...
透明辅助(WePoKe)原来真... 透明辅助(WePoKe)原来真的有挂(辅助挂)微扑克专用辅助程序怎么用的啊(详细透明挂教程)1、让任...
透明辅助(WPK)原来真的有挂... 透明辅助(WPK)原来真的有挂(透视)wpk有规则吗(详细透视教程)在进入wpk有规则吗辅助挂后,参...
透明辅助(德扑ai)原来真的有... 透明辅助(德扑ai)原来真的有挂(透视)微扑克辅助哪里有卖(详细辅助透视教程)1、完成微扑克辅助哪里...
透明辅助(德州ai)其实真的有... 透明辅助(德州ai)其实真的有挂(辅助挂)微扑克辅助神器(详细透视辅助教程)1、进入游戏-大厅左侧-...
透视辅助(WPK)其实真的有挂... 透视辅助(WPK)其实真的有挂(辅助挂)fishpoker app辅助(详细辅助透视教程)是一款可以...
透明辅助(微扑克)原来真的有挂... 透明辅助(微扑克)原来真的有挂(辅助挂)鱼扑克fishpoker俱乐部辅助(详细透视教程)是一款可以...
透视辅助(德扑ai)其实真的有... 透视辅助(德扑ai)其实真的有挂(辅助挂)wepoke最新下载地址(详细透明挂教程)一、wepoke...
透明辅助(德扑之星)原来真的有... 透明辅助(德扑之星)原来真的有挂(透视)wopoker真的有挂吗(详细透视教程)1.wopoker真...
透视辅助(WPK)其实真的有挂... 透视辅助(WPK)其实真的有挂(透视)wpk到底有没有外挂(详细透视辅助教程)1)wpk到底有没有外...
透明辅助(红龙扑克)原来真的有... 透明辅助(红龙扑克)原来真的有挂(辅助挂)微扑克ai机器人打德州(详细辅助透视教程);科技详细教程小...
透视辅助(微扑克)原来真的有挂... 透视辅助(微扑克)原来真的有挂(辅助挂)德州全自动辅助(详细透视辅助教程)1、让任何用户在无需德州全...
多元文旅绘就暑期画卷 夏日经济... 暑期文旅消费持续升温,各地通过多元举措激活市场活力,“文旅+”融合模式不断拓展。 ■设施升级添活力...
上海市86家A级旅游景区实施闭... 7月30日下午,台风“竹节草”逼近上海,后于16时40分前后二次登陆奉贤沿海。 上海中心气象台7月3...
透视辅助(WPK)原来真的有挂... 您好,微扑克有没有稳赢的打法这款游戏可以开挂的,确实是有挂的,需要了解加微【487309276】很多...
2025“蓝梦之歌”号乐活暑期... 青岛日报社/观海新闻7月30日讯 夏日的青岛,碧海扬波,风帆正劲。7月30日上午,2025“蓝梦之歌...
透明辅助(WPK)原来真的有挂... 透明辅助(WPK)原来真的有挂(透视)wepoke辅助有挂吗(详细辅助挂教程);科技详细教程小薇《4...
青岛6月多旅行社和导游违规被罚 2025年6月份,市、区(市)两级文化和旅游执法部门继续加大旅游市场监管力度,持续开展执法检查,维护...