javascript - React Hooks 动态输入

标签 javascript reactjs typescript

我有一个 form component ,您可以在其中单击按钮添加输入,创建一个新团队,您可以在其中添加球员。

问题是,如果您填写一个值,所有输入都将被该值填充,因为它使用相同的状态。我的猜测是为每个新团队创建一个新的状态值(类似于“输入”+ 索引,这将导致输入 0、输入 1、输入 2 等状态)。

虽然我不能使用 React Hooks 实现它,因为你必须首先声明你的状态,并为其分配一个集合函数。

关于如何实现此行为有什么想法吗?

最佳答案

这只是一个非常简单的解决方案,跟踪数组中的值,只是为了说明钩子(Hook)不会让任何事情变得更困难:

function App() {
  let [inputs, setInputs] = useState([""]);

  return (
    <div className="App">
      <button onClick={() => setInputs(inputs.concat(""))}>Add input</button>
      <form>
        {inputs.map((value, i) => (
          <div key={i}>
            <label>Input {i + 1}</label>
            <input
              value={value}
              onChange={e =>
                setInputs(
                  inputs.map((value, j) => {
                    if (i === j) value = e.target.value;
                    return value;
                  })
                )
              }
            />
          </div>
        ))}
      </form>
    </div>
  );
}

codesandbox

关于javascript - React Hooks 动态输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55230842/

相关文章:

javascript - Handlebars 在嵌套循环中访问外部索引

reactjs - 使用 Sweet Alert 2 获取 this.props 在使用警告警报后未定义

html - 刷新输入类型文件

javascript - 如何在页面上拥有多组评分

javascript - 当我点击 ul 的汉堡包时,有没有办法水平移动并将 Logo 从中心移动到最左边?

javascript - 如何在没有唯一键警告的情况下使用 React 渲染 Material UI 网格

reactjs - React : `return` an array from component, `key` 值问题

javascript - 使用 Typescript 将对象的 JSON 数组转换为字符串数组

javascript - React 和 Prettier/eslint 应用程序循环运行脚本

javascript - 将 Google Maps JS API ImageMapType 剪辑为多边形