javascript - react 动态表单输入

标签 javascript reactjs forms dynamic-forms

我有一个带有动态输入字段的 React 表单,用户可以添加和删除输入字段。当我提交表单时,我将每个输入的值记录在一个数组中。问题是我无法连续输入。当我输入输入时,我只能输入一个字符并且它会焦点消失。我该如何修复它?

CodeSandbox

App.js

import React, { useState } from "react";
import ReactDOM from "react-dom";

import "./styles.css";

function App() {
  const [fields, setFields] = useState([""]);

  function handleChange(i, event) {
    const values = [...fields];
    values[i] = event.target.value;
    setFields(values);
  }

  function handleAdd() {
    const values = [...fields];
    values.push("");
    setFields(values);
  }

  function handleRemove(i) {
    const values = [...fields];
    values.splice(i, 1);
    setFields(values);
  }

  function submitHandler(event) {
    event.preventDefault();
    console.log(fields);
  }

  return (
    <div className="App">
      <h1>Hello CodeSandbox</h1>
      <form onSubmit={submitHandler}>
        <button type="button" onClick={() => handleAdd()}>
          Add Input
        </button>

        {fields.map((field, idx) => {
          return (
            <div key={`${field}-${idx}`}>
              <input
                type="text"
                placeholder="Enter text"
                value={field || ""}
                onChange={(e) => handleChange(idx, e)}
              />
              <button type="button" onClick={() => handleRemove(idx)}>
                X
              </button>
            </div>
          );
        })}
        <button className="margin-top" type="submit">
          Submit
        </button>
      </form>
    </div>
  );
}

export default App;

最佳答案

用此替换您的代码

         <div key={`${"asdf"}-${idx}`}>
          <input
            type="text"
            placeholder="Enter text"
            value={field || ""}
            onChange={(e) => handleChange(idx, e)}
          />
          <button type="button" onClick={() => handleRemove(idx)}>
            X
          </button>
        </div>

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

相关文章:

javascript - react : TypeError: Cannot read property 'name' of undefined

forms - 主模型的创建/编辑 View 中的辅助表属性

javascript - 为什么我的函数无法返回具有特定文本内容的元素?

javascript - jQuery自动完成与java不过滤结果

javascript - 带有 webpack 和 Reactjs 的 django runserver 项目结构

html - 单击时避免 ionic 侧菜单关闭

java - 在任何文本字段上按下 Enter 键时的操作

javascript - 从 CDN 运行 babel 时,如何避免 React 应用出现错误 'Unexpected token <'?

javascript - 将 C# 函数返回值传递给 Javascript

javascript - 当测试组件呈现嵌套连接组件时,React 测试失败,找不到嵌套组件