4

我正在使用react-bootstrap-table启用cellEditreact-bootstrap-table可以在编辑单元格后使用回调函数。我已经命名了回调函数onAfterSaveCell。表中更新的行将保存到名为 的变量row中。我想发送给一个被称为接受作为输入row的动作创建者。我的代码看起来像这样。pushDatarow

function onAfterSaveCell(row, cellName, cellValue){
  this.props.pushData(row);
} 

const cellEditProp = {
  mode: "click",
  blurToSave: true,
  afterSaveCell: onAfterSaveCell
};

class Feature extends Component {
  componentWillMount() {
    this.props.fetchMessage();
  }

  render() {
    if (!this.props.message) return null

    return (
    <div>
      <BootstrapTable
              data={this.props.message}
              cellEdit={cellEditProp}
              >
        <TableHeaderColumn dataField="ccyCode" isKey={true} dataSort={true}>Valutakod</TableHeaderColumn>......

当我运行代码时出现错误Uncaught TypeError: Cannot read property 'props' of undefined。我认为这是因为propsclass Feature. 我试图移入onAfterSaveCell函数并移入cellEditPropclass Feature但这给了我一个编译错误。我怎样才能props在外部访问,class Feature或者应该以其他方式解决这个问题?

4

1 回答 1

4

你是对的,你不能this在课堂之外使用关键字。所以显而易见的答案是在类中定义你的回调函数。我认为您收到编译错误的原因是由于语法错误,因为这应该可以正常工作:

class Feature extends Component {
  constructor(props, context) {
    super(props, context);
    this.onAfterSaveCell = this.onAfterSaveCell.bind(this); // important!
  }

  componentWillMount() {
    this.props.fetchMessage();
  }

  onAfterSaveCell(row, cellName, cellValue) {
    this.props.pushData(row);
  }



  render() {
    if (!this.props.message) return null

    return (
    <div>
      <BootstrapTable
              data={this.props.message}
              cellEdit={{
                mode: "click",
                blurToSave: true,
                afterSaveCell: this.onAfterSaveCell
                }}
              >
        <TableHeaderColumn dataField="ccyCode" isKey={true} dataSort={true}>Valutakod</TableHeaderColumn>......
于 2016-10-03T13:46:24.867 回答