当前位置: 首页 > 知识库问答 >
问题:

React呈现html表并从html表中读取

巫马正卿
2023-03-14

这是一个概念性的问题,因为我试图理解在react中处理表格数据的最佳方法,而不使用任何特殊组件或库。

我在子组件中动态创建的html表中有数据。数据来自父组件。有些列具有可编辑的内容,我通过“编辑”按钮触发这些内容,以重新呈现表格的一个版本,该版本包含可编辑列的所有行的内联文本框。

当我更改文本框的内容时,我希望能够单击“保存”按钮并保存所有行。

“保存”和“编辑”按钮不在表中内联,而是位于我的组件中的表外。

如何从父组件访问子组件中的html表以读取所有行并将文本框中的值保存到数据存储

下面是我试图动态构建选择列表的代码片段。我遇到了一些语法错误的问题,它不起作用,但它给了我一个想法,我想做什么。

我正在传递类别和交易标识。当选择编辑模式时,我想将选择列表添加到表中每行的每个类别单元格中。事务id是我的解决方案,通过向事务id添加1,使当前行的索引在列表中可用。然后,我将使用选定的index-1获取用于更新相应记录类别的事务ID。这可能是一个黑客,但我想不出正确的方式或更好的方式将交易链接到选择列表。

renderCategory(category,transid){

    console.log(category);

    if (this.props.editMode === true){

    return  <div>
        <select id="selCategory" onChange={this.props.onCategoryChange}>

  const arrCategory = ["Category1","Category1","Category2","Category3","Category4","Category5","Category6","Category7"];

          var i;

          for (i = 1;arrCategory.length+1;i++){

            <option value={transid+1}>{arrCategory[i-1]}</option>

            if(arrCategory[i-1] === category) {
              selectedIndex = i-1;
            }
          }
        </select>
      </div>
    }
    else {
      return category
    }
  }

在这里,我在父级中有代码,用于处理子级中选择列表的onChange事件。

  handleCategoryChange(e) {

         // this will have to be changed because I'm using the index value to store the transaction id

        alert("The Child HTML is: " + e.target.innerHTML + "The selected value is: " + e.target.options[e.target.selectedIndex].value); 


        //// update the date which is in parent state to reflect the new value for category for the passed in transaction id (the problem is I don't know what the transaction id is...)

      }

共有1个答案

鲁鸿
2023-03-14

要实现这一点,您需要执行以下操作

在父组件中:

>

然后通过道具将父组件状态中的数据和状态更新函数传递给子组件。

在子组件中:

>

使用这些数据填充表格和每个可编辑框的输入,传递一个onChange,并为其提供从父组件传递的函数的引用。

以下是一个可供参考的小片段:

class Parent extends Component {

    constructor() {
        super()
        this.state = {
            data: ''
        }
    }

    //update your state here
    stateUpdateHandler = (value) => {            
        this.setState({data: value})
    }

    render () {
        return(
            <Child data={this.state.data} stateUpdateHandler={stateUpdateHandler} />
        )
    }

}


class Child extends Component {

    render() {
        const {data, stateUpdateHandler}
        return(
            <div>
                <input 
                  type='text' value={d.value} 
                  onChange={(e) => stateUpdateHandler(e.target.value)} />
            </div>
        )
    }

}

编辑:这是你应该如何处理onChange事件

onCategoryChange: function(event) {
    console.log(event.target.value) //This would have the value of transaction provided in the value attribute of option tag
}

如果要获取事务id,而不是option标记的value属性中的值,则必须更改select标记并按如下方式写入:

<select id="" onChange={function() {this.props.onCategoryChange(transid)}}>
 类似资料:
  • 问题内容: 我正在将我的某些网络抓取代码从R转换为Python(我无法让geckodriver与R一起使用,但它与Python一起使用)。无论如何,我试图了解如何使用Python解析和读取HTML表。快速背景,这是我的R代码: 我将HTML页面解析为doc对象。然后,我将以开始,并通过更大的数字,直到看到所需的数据。在这种情况下,我去看了想要的数据。然后,我将读取该HTML表并将其分配给WebEl

  • 问题内容: 这是我尝试过的方法以及出现问题的方法。 这有效: 这不是: description属性只是HTML内容的普通字符串。但是由于某种原因,它呈现为字符串,而不是HTML。 问题答案: 检查您尝试追加到节点的文本是否没有像这样转义: 代替这个:

  • 以下是我尝试过的,以及它是如何出错的。 这个作品: 这没有: description属性只是HTML内容的普通字符串。但是,由于某些原因,它被呈现为字符串,而不是HTML。 有什么建议吗?

  • 问题内容: 我有包含HTML的JSON变量。 这样做:显示Angular 而不是和。 如何使Angular呈现实际的HTML? 更新: 这是我的控制器: 然后在我的HTML中可以使用: 问题答案: 您要 显示 HTML(例如)还是 渲染 HTML(例如 Hello )? 如果要显示它,大括号就足够了。但是,如果您拥有的html具有html实体(如),则需要手动对其进行转义。 如果要渲染它,则需要使

  • 问题内容: 我正在寻找一种在Linux Shell环境中从HTML获取某些信息的方法。 这是我感兴趣的一点: 我想将它们存储在shell变量中或在从html上面提取的键值对中回显这些变量。范例: 目前,我可以做的是创建一个Java程序,该程序将使用sax解析器或html解析器(例如jsoup)来提取此信息。 但是在这里使用Java似乎很麻烦,因为要在您要执行的“包装器”脚本中包含可运行的jar。

  • 我正试图从SQL Server导出一些数据作为HTML文件,但Internet explore将这些文件呈现得非常好,尽管chrome显示特殊字符。