返回介绍

如何在 DevTools 中调试 forwardRefs?

发布于 2024-08-09 20:39:57 字数 1220 浏览 0 评论 0 收藏 0

React.forwardRef 接受渲染函数作为参数,DevTools 使用此函数来确定为 ref 转发组件显示的内容。例如,如果您没有使用 displayName 属性命名 render 函数,那么它将在 DevTools 中显示为“ForwardRef”,

const WrappedComponent = React.forwardRef((props, ref) => {
  return <LogProps {...props} forwardedRef={ref} />;
});

但如果你命名 render 函数,那么它将显示为 “ForwardRef(myFunction)”

const WrappedComponent = React.forwardRef(
  function myFunction(props, ref) {
    return <LogProps {...props} forwardedRef={ref} />;
  }
);

作为替代方案,您还可以为 forwardRef 函数设置 displayName 属性,

function logProps(Component) {
  class LogProps extends React.Component {
    // ...
  }

  function forwardRef(props, ref) {
    return <LogProps {...props} forwardedRef={ref} />;
  }

  // Give this component a more helpful display name in DevTools.
  // e.g. "ForwardRef(logProps(MyComponent))"
  const name = Component.displayName || Component.name;
  forwardRef.displayName = `logProps(${name})`;

  return React.forwardRef(forwardRef);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文