相关疑难解决方法(0)

如何对带有钩子的元素数组使用多个引用?

据我了解,我可以将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")
);
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

如何为元素数组实现此功能?显然不是这样:(即使我没有尝试过,我也知道:)

const { useRef, useState, useEffect } = React;

const App = () => {
  const elRef = useRef();
  const [elWidth, setElWidth] = …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-hooks

10
推荐指数
9
解决办法
7038
查看次数

将 useRef 与 Array 反应为动态

我试图使每个字母输入时焦点移动到下一个输入的组件。

我想我需要多个ref像数组一样,但我不知道。

这是问题的示例代码。

function PIN({length, onChange, value}){
  const inputEl = React.useRef(null);
  function handleChange(e){
    onChange(e);
    inputEl.current.focus(); 
  }
  return (
    <div>
      {
        new Array(length).fill(0).map((i)=>(
          <input type="text" ref={inputEl} onChange={handleChange} />
        ))
      }
    </div>
  )
}
Run Code Online (Sandbox Code Playgroud)

reactjs react-hooks

3
推荐指数
2
解决办法
1万
查看次数

标签 统计

react-hooks ×2

reactjs ×2

javascript ×1