从REACT中的输入字段渲染动态行

Aashiq艾哈迈德

我是React的新手,我的问题很简单,我有一个带有输入字段的表单,该字段获取一些输入数据,并在Submit表单上将输入数据呈现为一行,然后单击Delete按钮,如果出现这种情况,我们可以删除数据我已经实现了行的呈现,但是在删除功能方面存在疑问。

App.js文件的代码为,

import React, { Component } from "react";

export default class App extends Component {
  state = {
    names: [],
  };

  handleSubmit = (event) => {
    event.preventDefault();
    let value = document.getElementById("namevalue").value;
    const obj = { id: Date.now(), value };
    this.setState({
      names: [obj, ...this.state.names],
    });
    document.getElementById("myform").reset();
    
   
    return;
  };

  renderTable() {
    return (
      this.state.names &&
      this.state.names.map((name) => {
        const { id, value } = name; //destructuring
        return (
          <tr key={id}>
            <td>{value}</td>
            <td>
              <input
                type="button"
                value="Delete"
                onClick={this.deleteName(id)}
              />
            </td>
          </tr>
        );
      })
    );
  }

  deleteName = (id) => {
    console.log(id);
    /* this.setState({
      names: this.setState.names.filter((name) => name.id !== id),
    });*/
  };

  render() {
    return (
      <>
        <form onSubmit={this.handleSubmit} id="myform">
          <label>
            Name:
            <input type="text" name="name" id="namevalue" />
          </label>
          <input type="submit" value="Submit" />
        </form>

        {/* Table */}
        <br />
        <table>
          <tbody>
            <tr>
              <th>Names</th>
              <th>Operation</th>
            </tr>
            {/* Render dynamic rows
             */}
            {this.renderTable()}
          </tbody>
        </table>
      </>
    );
  }
}

您可以看到我已经实现了delete方法,但是会引发错误 浏览器输出

我想在单击“删除”按钮时删除该行,但是在单击该按钮时会引发错误,

错误

Heri Hehe Setiawan

首先,onClick值应为函数引用,否则将引入渲染循环。

onClick={() => this.deleteName(id)}

然后,可以使用array.splice函数实现delete函数,如下所示:

deleteName = (id) => {
    console.log(id);
    const { names } = this.state;
    const index = names.findIndex(name => name.id === id);
    this.setState({
      names: [
        ...names.splice(index, 1),
      ]
    })
  };

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 React 渲染输入中动态添加属性

来自分类Dev

在React 0.12中动态渲染React组件

来自分类Dev

React:动态添加输入字段以形成表单

来自分类Dev

React onChange rerender动态输入字段很奇怪

来自分类Dev

在React中的div中渲染用户输入

来自分类Dev

在React中动态构建渲染功能

来自分类Dev

如何在React中渲染动态表

来自分类Dev

在 React 中渲染动态子组件

来自分类Dev

在react js中渲染动态html

来自分类Dev

无法在React中输入字段

来自分类Dev

验证React中的输入字段

来自分类Dev

如何动态验证LiveCode中的字段输入?

来自分类Dev

Laravel中的发布/输入动态字段

来自分类Dev

Laravel中的发布/输入动态字段

来自分类Dev

在 AJAX 中动态更改输入字段

来自分类Dev

根据状态变量的变化,在react中显示多个动态输入字段?

来自分类Dev

Angular2 +中动态渲染输入元素的指令

来自分类Dev

硒/渲染问题,无法从输入字段中读取文本

来自分类Dev

流星动态输入字段

来自分类Dev

流星动态输入字段

来自分类Dev

用户输入的动态字段

来自分类Dev

reactjs动态渲染行

来自分类Dev

如何使用react获取动态创建的输入字段的值

来自分类Dev

闪亮地动态添加输入字段和数据,而无需重新渲染

来自分类Dev

如何从React中的useRef重置输入字段?

来自分类Dev

输入字段在 React 中失去焦点

来自分类Dev

在react / html中渲染新行(\ n)

来自分类Dev

从React Native中的数组映射功能动态渲染内容

来自分类Dev

如何在 React 中动态渲染嵌套组件?