开发者问题收集

react bootstrap table 错误未捕获的 TypeError: this.refs.innerDiv.setAttribute 不是一个函数

2015-11-24
1382

我正在寻找一个简单的 bootstrap react 表组件,具有添加、编辑、删除行功能。我尝试将 this 与我现有的 react 应用程序一起使用,但卡在以下错误中。

未捕获的 TypeError:this.refs.innerDiv.setAttribute 不是函数

表确实显示了,但由于上述错误,之后什么都不起作用。这是代码。 在此处输入代码

import React from 'react';
//import {BootstrapTable, TableHeaderColumn} from 'react-bootstrap-table';
import AppointmentActionCreator from '../actions/AppointmentActionCreators';
var ReactBsTable = require("react-bootstrap-table");
var BootstrapTable = ReactBsTable.BootstrapTable;
var TableHeaderColumn = ReactBsTable.TableHeaderColumn;
var products = [];
function addProducts(quantity) {
  var startId = products.length;
  for (var i = 0; i < quantity; i++) {
    var id = startId + i;
    products.push({
      id: id,
      name: "Item name " + id,
      price: 2100 + i
    });
  }
}
addProducts(5);
export default class BasicTable extends React.Component{
 constructor() {
    super()
    this.state = {
      appointments: ''
    };
    AppointmentActionCreator.getAppointments();
  }
  render(){
    return (
      <div>
        <BootstrapTable data={products} striped={true} hover={true} condensed={true}>
          <TableHeaderColumn dataField="id" isKey={true}>Product ID</TableHeaderColumn>
          <TableHeaderColumn dataField="name">Product Name</TableHeaderColumn>
          <TableHeaderColumn dataField="price">Product Price</TableHeaderColumn>
        </BootstrapTable>
      </div>
    );
  }
};
2个回答

不知何故,react-bootstrap 模块产生了问题。我将其与 react 模块一起从项目中删除。重新安装 react 和 react-bootstrap 模块以解决此问题。我仍然不知道是什么原因造成的,但我用这种方法解决了它。我相信最新版本的 react 或 react-bootstrap 在解决方案中发挥了作用。感谢 react-bootstrap-table 的 Allen Fang。

Hemal
2015-12-16

查看 git 项目的源代码,在 TableHeaderColumns 的 componentDidMount 阶段调用了 this.refs.innerDiv.setAttribute("data-field", this.props.dataField); 。尝试在类的构造函数中设置产品数组 - 渲染方法可能在调用 addProducts 函数之前被调用 - 这意味着数据数组最初是空的。

user2341388
2015-11-24