React native null不是Android

时间:2017-12-09 07:59:35

标签: android ios reactjs react-native

React native null不是Android上的对象(评估' _scrollView.scrollTo')

  componentDidMount() {

      let scrollValue = 0;
      setInterval(function(){
          scrollValue = scrollValue + width;   // width = screen width
          _scrollView.scrollTo({x: scrollValue})
      }, 3000);
}


<ScrollView
ref={(scrollView) => { _scrollView = scrollView; }}
horizontal={true} pagingEnabled={true} >
 {items}
</ScrollView>

它的工作是自动幻灯片内容,但是当我从另一个页面返回时,它的返回错误null不是一个对象(评估&#39; _scrollView.scrollTo&#39;)I不知道那个

2 个答案:

答案 0 :(得分:0)

您应该在this上保存参考。即便如此,如果引用位于其他范围内,则在安装多个ScrollView时会遇到问题。

componentDidMount() {
  let scrollValue = 0;
  setInterval(() => {
      scrollValue = scrollValue + width;
      this._scrollView.scrollTo({x: scrollValue})
  }, 3000);
}

render() {
  // ...
  return (
    <ScrollView
      ref={scrollView => this._scrollView = scrollView}
      horizontal={true}
      pagingEnabled={true}
    >
      {items}
    </ScrollView>
  )
}

请注意,当您在组件中创建自定义方法时,this必须由您自己绑定

scrollListToLeft = () => {
  this._scrollView.scrollTo({x: 0})
}

答案 1 :(得分:0)

您必须检查_scrollView是否不为空

if(this._scrollView != null){
 scrollValue = scrollValue + width;
 this._scrollView.scrollTo({x: scrollValue})
}

render() {
  // ...
  return (
    <ScrollView
      ref={scrollView => this._scrollView = scrollView}
      horizontal={true}
      pagingEnabled={true}
    >
      {items}
    </ScrollView>
  )
}

我希望这样可以解决我的问题。