未捕获的TypeError:无法读取未定义的属性"parentNode"

use*_*926 4 javascript backbone.js reactjs

我以前从未有过这个,我只能假设它找不到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);
  }

});
Run Code Online (Sandbox Code Playgroud)

这是第一次呈现 - 非常棒.你看到一个带有帖子的表,然后你点击它删除它一直到 - 从模型中删除它,回忆集合一直渲染.从那里它获得总页数,帖子,然后将它们传递给组件,在那个阶段,我得到:

Uncaught TypeError: Cannot read property 'parentNode' of undefined

有没有人有任何想法?

Der*_*ger 6

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