美文网首页
forwardRef使用中碰到的奇怪问题

forwardRef使用中碰到的奇怪问题

作者: 是嘤嘤嘤呀 | 来源:发表于2021-11-18 10:23 被阅读0次

问题描述:通过externals 或是 动态连接库 加载react,ref 会直接被透传

// App.js
import React, { forwardRef, useRef } from "react";
function logProps(WrappedComponent) {
  class LogProps extends React.Component {
    componentDidUpdate(prevProps) {
      console.log("old props:", prevProps);
      console.log("new props:", this.props);
    }
    render() {
      return <WrappedComponent {...this.props} />;
    }
  }
  return LogProps;
}
// 注意:这里是函数组件
function FancyButton(props, ref) {
  console.log(ref);
  return <div ref={ref}>sssss</div>;
}
const MFancyButton = forwardRef((props) => {
  const MemodFancyButton = logProps(FancyButton);
  return <MemodFancyButton {...props} />;
});

export default function App() {
  const dsRef = useRef();
  return <MFancyButton ref={dsRef} />;
}
  • 上述代码在项目针对reactreact-dom配置了externalsdll之后,不会报错
// webpack.config.js
externals: {
  "react": "React",
  "react-dom": "ReactDOM",
},

// index.html
<script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
  • 如果未设置externalsdll,则会报如下错误
    报错信息1
    报错信息2

相关文章

网友评论

      本文标题:forwardRef使用中碰到的奇怪问题

      本文链接:https://www.haomeiwen.com/subject/fxsdtrtx.html