无法在回调函数中访问属性React

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在回调函数中访问属性React相关的知识,希望对你有一定的参考价值。

我正在使用一个名为Papa Parse的库来将csv文件解析为json。解析器工作正常,但我无法在配置对象的“完整”部分中为Papa解析指定的回调函数中调用我的操作创建器。我认为这是一个范围问题,但我一直无法解决它。下面感兴趣的主要部分是为什么我不能调用'printFile'函数中的任何一个函数,最重要的是'addRoster'函数。请告诉我您有任何建议或想法。谢谢!

编辑:忽略这是片段形式。什么在这里是不可运行的,我只是无法使格式化工作。

class Roster extends Component {

  super(props) {

    this.printFile = this.printFile.bind(this);

    this.testMethod = this.testMethod.bind(this);
  }

  componentWillMount() {
    this.props.addRoster('test')
  }

  printFile(results, file) {
    this.props.addRoster(file);
    this.props.testMethod;
  }

  testMethod(test) {
    console.log("Winner")
  }

  fileDrop(file) {

    var config = {
      delimiter: "", // auto-detect
      newline: "", // auto-detect
      quoteChar: '"',
      header: true,
      dynamicTyping: false,
      preview: 0,
      encoding: "",
      worker: false,
      comments: false,
      step: undefined,
      complete: this.printFile,
      error: undefined,
      download: false,
      skipEmptyLines: false,
      chunk: undefined,
      fastMode: undefined,
      beforeFirstChunk: undefined,
      withCredentials: undefined
    }
    Papa.parse(file, config)
  }


  render() {
    const {
      addRoster
    } = this.props;

    return ( <
      Grid >
      <
      Row >
      <
      MyDropzone onFileDrop = {
        this.fileDrop.bind(this)
      }
      /> < /
      Row > <
      /Grid>
    )
  }

}

export default connect(null, {
  addRoster
})(Roster);
答案

我认为你没有添加一个构造函数,所以函数没有绑定?尝试改变这个

super(props) 
{
  this.printFile = this.printFile.bind(this);
  this.testMethod = this.testMethod.bind(this);
}

constructor(props) 
{
  super(props);
  this.printFile = this.printFile.bind(this);
  this.testMethod = this.testMethod.bind(this);
}

以上是关于无法在回调函数中访问属性React的主要内容,如果未能解决你的问题,请参考以下文章

React.withContext和getChildContext

无法在事件处理程序中访问 React 实例(this)[重复]

回调函数无法访问父函数范围内的变量

无法访问从 ajax 调用返回的对象的属性

React ref

react中获取dom以及使用ref