RN0.34.1 版本中使用this.forceUpdate的问题



  • 各位RN达人,本人在RN0.34.1中使用this.forceUpdate时出现错误。。花了一下午都没办法解决。所以救助!!!
    1、使用:
    _updateBarBackgroundStyle(style) {
    self.route.barBackgroundStyle = style;
    setTimeout(this.forceUpdate, 0);
    }
    2、下面是报的错误:
    2016-10-03 18:06:08.547 [error][tid:com.facebook.react.JavaScript] undefined is not an object (evaluating 'func.apply')
    2016-10-03 18:06:08.552 [fatal][tid:com.facebook.react.RCTExceptionsManagerQueue] Unhandled JS Exception: undefined is not an object (evaluating 'func.apply')

    我想要在ScrollView上下滚动的过程中使用setTimeout去调用this.forceUpdate重绘。使导航栏由透明到不透明。希望大家帮助。。谢谢先。。



  • @macroswang 说:

    setTimeout(this.forceUpdate, 0);

    哈哈。。睡了一觉,起来就已经解决了。。原来是我忘了在构造函数里面加:
    this._updateBarBackgroundStyle = this._updateBarBackgroundStyle.bind(this);
    这一句。还有一点奇怪的事,即使加了函数绑定的这一句,如果直接使用:
    _updateBarBackgroundStyle(style) {
    self.route.barBackgroundStyle = style;
    setTimeout(this.forceUpdate, 0);
    }
    这样还是会出错的,必须要这样使用:
    setTimeout(function(){
    this.forceUpdate();
    }.bind(this), 0);


登录后回复