在 class 之外访问道具

Access props outside class

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

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 函数和 cellEditProp 移入 class Feature 但这给了我一个编译错误。我怎样才能使 propsclass Feature 之外可以访问,或者应该以其他方式解决这个问题?

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

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>......