据我所知,我可以将 refs 用于这样的单个元素:
const { useRef, useState, useEffect } = React;
const App = () => {
  const elRef = useRef();
  const [elWidth, setElWidth] = useState();
  useEffect(() => {
    setElWidth(elRef.current.offsetWidth);
  }, []);
  return (
    <div>
      <div ref={elRef} style={{ width: "100px" }}>
        Width is: {elWidth}
      </div>
    </div>
  );
};
ReactDOM.render(
  <App />,
  document.getElementById("root")
);
<script src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
<div id="root"></div>
如何为元素数组实现这个?显然不是那样的:(我没试过就知道了:)
const { useRef, useState, useEffect } = React;
const App = () => {
  const elRef = useRef();
  const [elWidth, setElWidth] = useState();
  useEffect(() => {
    setElWidth(elRef.current.offsetWidth);
  }, []);
  return (
    <div>
      {[1, 2, 3].map(el => (
        <div ref={elRef} style={{ width: `${el * 100}px` }}>
          Width is: {elWidth}
        </div>
      ))}
    </div>
  );
};
ReactDOM.render(
  <App />,
  document.getElementById("root")
);
<script src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
<div id="root"></div>