首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在react中动态编辑和更新表单元格

在react中动态编辑和更新表单元格
EN

Stack Overflow用户
提问于 2020-09-24 12:26:28
回答 1查看 75关注 0票数 0

我是个新手。我想在react中实现学生评分表的以下功能。我该怎么做呢?

请参考图片。

将表单元格更改为输入框

表格中的可编辑单元格

到目前为止,Here是我尝试过的代码片段

EN

回答 1

Stack Overflow用户

发布于 2020-09-24 13:29:49

改进了你的代码。您可以根据自己的要求进行更改。Live demo

代码语言:javascript
复制
const Grades = () => {
  const [grade, setGrade] = useState("");
  const [data, setData] = useState([]);
  const [showEdit, setShoEdit] = useState(0);

  var count = 0;
  const handleChange = (event) => {
    setGrade(event.target.value);
  };

  const addGrade = () => {
    setData([...data, { Grade: grade, id: Math.floor(Math.random()*100) }]);
    setGrade("");
  };
  const editGrade = (row) => {
    console.log(row)
    setShoEdit(row.id);
    setGrade(row.id);
  }
  const saveGrade = (row) => {
    let update = data.map(list =>
      list.id === row.id ? ({...list, Grade: grade}) : list
    );
    setData([...update]);
  }

  return (
    <div className="container-xl">
      <div className="form-group row">
        <div className="col-md-1">
          <label className="col-form-label ">Grade</label>
        </div>
        <div className="col-md-4">
          <input
            type="text"
            value={grade}
            className="form-control"
            name="Grade"
            onChange={handleChange}
          />
        </div>

        {!showEdit && <div className="form-group col-md-6">
          <button
            type="button"
            className="btn btn-outline-primary"
            onClick={addGrade}
          >
            Add Grade
          </button>
        </div>}
      </div>
      <div className="form-group row">
        <table className="table">
          <thead className="thead-dark">
            <tr>
              <th>#</th>
              <th>Grades</th>
              <th>Grade Id</th>
              <th>Operations</th>
            </tr>
          </thead>
          <tbody>
            {data.map((row,i) => (
              <tr key={row.id}>
                <td>{++count}</td>
                <td>{row.Grade}</td>
                <td>{row.id}</td>
                <td>
                  {!(row.id === showEdit) ? <button
                  onClick={()=> editGrade(row)}
                    key={row.id}
                    className="btn btn-outline-primary"
                    type="button"
                  >
                    Edit
                  </button>:
                  <button
                  type="button"
                  className="btn btn-outline-primary"
                  onClick={()=>saveGrade(row)}
                >
                  Save
                </button>}
                </td>
              </tr>
            ))}
          </tbody>
        </table>
      </div>
    </div>
  );
};

export default Grades;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64039539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档