当前位置: 首页 > 面试题库 >

从表中删除行会导致TypeError

洪和平
2023-03-14
问题内容

我有一个ReactJS HTML表格组件,并使用setState方法更新了它的内容(单元格值)。这是基本代码:

 var Cell = React.createClass({
  render: function () {
    return (<td>{this.props.cellValue}</td>);
      }
    });

 var Row = React.createClass({
  render: function () {
     return (<tr>{this.props.row}</tr>);
   }
  });

var Table = React.createClass({
  getInitialState: function() {
    return {
      data: this.props.data
    };
  },
  render: function () {
    return (
      <table>
      {
        this.state.data.map(function(row) {
          var r = row.map(function(cell) {
            return <Cell cellValue={cell}/>;
          });

          return (<Row row={r}/>);
        })
      }
      </table>
     );
  }});

您可以这样使用它:

var initialData = [[1,2,3],[4,5,6],[7,8,9]];
var table = React.renderComponent(
  <Table data={initialData} />,
  document.getElementById('table')
);

大部分时间都在工作。我可以通过执行以下操作来更改数据(在函数中的某处):

var newData = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]];
table.setState({data : newData});

如您所见,它将在表的末尾添加一行。但是,如果我尝试在此更新后设置初始数据,或者以任何方式通过设置为较小的数组(例如应删除最后一行)来 缩短
行数:data``[[1, 2, 3], [4, 5, 6]]

table.setState({data : initialData});

我收到此错误:

TypeError:updatedChildren [j]是未定义的updatedChildren [j]
.parentNode.removeChild(updatedChildren [j]);

它从何而来?


问题答案:

一些浏览器(经过Firefox和Chrome测试)会自动将<tbody>...</tbody>标签添加到没有标签的HTML表中。将它们添加到我的表组件中可以解决此问题:

render: function () {
    return (
      <table><tbody>
      {
        ... same code as before ...
      }
      </tbody></table>
     );

如果您看一下React生成的html代码,您会注意到它data- reactid向React组件渲染的所有HTML标签添加了一些数据属性()(有关data属性的更多信息,请参见:此处)。由于<tbody>...</tbody>html" target="_blank">标签不是来自React组件,因此它们没有任何标签data- reactid,这些属性有助于React跟踪DOM节点。

无论如何,谢谢那些谈论这个问题的人。这里的链接https://groups.google.com/forum/#!topic/reactjs/NLs-
PdrdDMA

有关更多信息data- reactid:https
:
//groups.google.com/forum/# ! topic/reactjs/ewTN-
WOP1w8。



 类似资料:
  • 问题内容: 从视图中删除一行,是否会从创建该视图的基表中删除相应的行?我正在使用MySQL。 问题答案: 是的,它会的。唯一需要注意的是权限。 引用官方文档 有些观点是可更新的。也就是说,您可以在诸如UPDATE,DELETE或INSERT之类的语句中使用它们来更新基础表的内容。为了使视图可更新,视图中的行与基础表中的行之间必须存在一对一的关系。还有某些其他构造会使视图不可更新。

  • 本文向大家介绍从视图中删除行会从MySQL的基表中删除行吗?,包括了从视图中删除行会从MySQL的基表中删除行吗?的使用技巧和注意事项,需要的朋友参考一下 是的,从视图中删除行从基表中删除行。让我们通过创建一个新表来了解这一点。创建表的查询如下 使用insert命令在表中插入一些记录。查询如下- 使用select语句显示表中的所有记录。查询如下- 以下是输出 让我们创建一个视图。创建视图的查询如下

  • 我有一个JTable,其中有一行自定义对象,其中一列是倒计时的时间组件。当倒计时达到0时,该行将自动删除。 我还通过文本框提供了一个过滤选项,用户可以在其中键入文本框,根据数据过滤行。 如果没有应用于JTable的排序器,除了过滤之外,一切都可以正常工作(当时间计数为0时,行会自行删除)。应用排序器会给我一个"java.lang.IndexOutOfBoundsException:无效索引" 我的

  • 问题内容: 我正在尝试使用SQL从连接在一起的多个表中删除多行。 表A连接到表B表B连接到表C 我想删除表B和C中与表A中的一行相对应的所有行 问题答案: 好吧,如果您使用过InnoDB表,则可以使用外键设置级联删除,这将自动完成所有操作。但是,如果您出于某种原因使用MyISAM,则只需使用多表DELETE即可:

  • 我已经按照较新的SDK的建议实现了批量删除。创建了要删除每个项目的任务列表,然后等待所有任务。我的 CosmosClient 配置了 BulkOperations = true。据我所知,这意味着在引擎盖下,新的SDK发挥了魔力并执行批量操作。 不幸的是,我遇到了429响应状态。这意味着我的多个请求达到了请求速率限制(它很低,仅限于开发层,但不限于此)。我想知道,一个批量操作怎么会导致429错误。

  • 在本例中,我在一个包含2个副本的部署中运行“echoheaders”Nginx。当我删除一个pod时,我有时会收到约40秒的缓慢响应和错误。 我们正在库伯内特斯运行我们的API网关,并且需要能够允许库伯内特斯调度程序在它认为合适的时候处理pod。 我们最近想引入会话相关性,为此,我们想迁移到新的闪亮的NEG:网络endpoint组:https://cloud.google.com/load-bal