回调在React中不起作用

时间:2015-09-16 01:21:36

标签: javascript callback reactjs

我有一个有趣的问题,我似乎不明白。我必须忽视一些明显的问题。我在检查用户是否登录后尝试设置状态,所以我决定实现一个回调函数。但是,它看起来不像我的回调正在执行。谁能告诉我我做错了什么? checkAuthentication函数工作正常,而不是回调函数。有什么想法吗?

这是我展示问题的JSFiddle。

https://jsfiddle.net/69z2wepo/16069/

checkAuthentication: function( cb ) {

  this.setState({
    loggedIn: true,
    userId: 3243,
  }, function(){

    if (cb && (typeof cb == "function")) {
      cb();
      console.log("wtf");
    }

  });

},


componentDidMount: function() {
    this.checkAuthentication( function() {
      this.setState({
        view: "user",
        viewUserId: 54234,
      });
    }).bind(this);
 },

1 个答案:

答案 0 :(得分:1)

您可以添加.bind(this)来修复回调(有关详情,另请参阅How to access the correct `this` context inside a callback?)。

但是,您在错误的地方添加了.bind(this)电话。你在做什么

this.checkAuthentication(...).bind(this);

即。您在.bind返回值上致电this.checkAuthentication。但是,this.checkAuthentication不会返回任何内容,因此浏览器会正确抛出错误:

  

未捕获的TypeError:无法读取未定义的属性'bind'

您必须在回调函数上调用.bind

this.checkAuthentication(function() { ... }.bind(this));

Fixed fiddle。另请参阅上面的链接,了解this问题的其他解决方案。