ReactJS - Edge浏览器在setState中抛出追加错误

时间:2018-05-10 19:03:44

标签: reactjs microsoft-edge

我正在使用ReactJS并且有一个网格,我正在填充数据。我已经抽象了网格,所以我们需要做的就是为列和数据传递道具(columnDefinitions - 列信息数组,gridData - object)。我遇到的问题是在填充组件的状态时,我会做这样的事情:

this.state = {
      gridOptions: {
        colDefs: columnDefinitions,
        ...
      }
    }

然后在componentDidMount中:

componentDidMount(){
this.setState( { rowData: this.props.gridData });

}

这在Chrome中运行良好但在Edge(v41)中我得到的Object不支持属性或方法'append'。

如果我更改了手动定义colDef:[]数组而不是传入的prop没有问题但是我无法抽象。

1 个答案:

答案 0 :(得分:0)

.append并未被普遍接受。 https://developer.mozilla.org/en-US/docs/Web/API/ParentNode/append

你正在使用像巴贝尔这样的转发器吗?该链接还包含.append

的填充
(function (arr) {
  arr.forEach(function (item) {
    if (item.hasOwnProperty('append')) {
      return;
    }
    Object.defineProperty(item, 'append', {
      configurable: true,
      enumerable: true,
      writable: true,
      value: function append() {
        var argArr = Array.prototype.slice.call(arguments),
          docFrag = document.createDocumentFragment();

        argArr.forEach(function (argItem) {
          var isNode = argItem instanceof Node;
          docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)));
        });

        this.appendChild(docFrag);
      }
    });
  });
})([Element.prototype, Document.prototype, DocumentFragment.prototype]);