未捕获的类型错误:无法读取未定义的属性“parentNode”

IT技术 javascript backbone.js reactjs
2021-05-20 23:42:06

我以前从未得到过这个,我只能假设它也找不到div它试图渲染元素?这是没有意义的,因为当我console.log在事件触发之前和之后有问题的元素存在时,但会抛出错误......

下面是一个主干视图 - 渲染一个 reactjs 组件,我们传入deleteEvent: this.handleDeleteEvent.bind(this)它允许我们连续单击删除,它将冒泡事件并遍历,本质上是重新调用集合并重新渲染组件。

但它React.renderComponent()是导致手头问题的原因:

AisisWriter.Views.PostIndex = AisisWriter.Views.CoreView.extend({

  writer_posts: new AisisWriter.Collections.Posts(),

  handleDeleteEvent: function(id){
    var toDelete = new AisisWriter.Models.Post();
    toDelete.set({id: id});
    toDelete.destroy().then(this.deleted(id), this.failedToDelete);
    return false
  },

  deleted: function(id) {
    var options = { reset: true };
    this.writer_posts.fetch(options).then(this.postsRecieved.bind(this), this.serverError);
  },

  postsRecieved: function(collection, response, options) {
    this.render(collection);

    if ($('#flash-error').is(':visible')){
      $('#flash-error').hide();
    }

    $('#flash-success').show();
  },

  serverError: function() {
    if ($('#flash-success').is(':visible')){
      $('#flash-success').hide();
    }

    $('#flash-error').show();
  },

  failedToDelete: function() {
    if ($('#flash-success').is(':visible')){
      $('#flash-success').hide();
    }

    $('#flash-error').show();
  },

  render: function(postsObject) {
    element = this.getElement();

    var totalPerPage = postsObject.total_pages.total;
    var posts = postsObject.posts;

    React.renderComponent(new PostTable({posts: posts, maxPages: totalPerPage, deleteEvent: this.handleDeleteEvent.bind(this)}), element);
  }

});

这是第一次渲染 - 很好用。你会看到一个带有帖子的表格,然后你点击删除它一直通过 - 从模型中删除它,一直调用集合进行渲染。从那里它获取总页面,帖子,然后将它们传递给组件,在那个阶段我得到:

Uncaught TypeError: Cannot read property 'parentNode' of undefined

有没有人有任何想法?

1个回答

在您的 PostTable 组件中,您是否显式渲染了一个<tbody>元素?某些浏览器会在初始渲染后自动添加一个,这可能会导致此问题。<tbody>显式渲染应该可以解决这个问题。