【问题标题】:wants to autoscroll flatlist in react native想要在本机反应中自动滚动平面列表
【发布时间】:2019-02-07 09:00:57
【问题描述】:

我正在尝试自动滚动我的平面列表,但是当我运行我的代码时,我无法自动滚动,如果我想手动滚动,它会在每 5 秒后到达索引 0 .. 这是我的所有平面列表代码及其 refs 函数

在构造函数中

this.flatList1=null;

并且在组件中会挂载

componentWillMount(){

  setInterval(()=>{
    if(this.flatList1!==null){
      this.flatList1.scrollToOffset({ offset: 1 })
    }
  }, 5000);
}

<FlatList horizontal
  data={this.state.getallvideos}
  ref={flatList1 => { this.flatList1 = flatList1 }}
  renderItem={({item}) =>  

    <TouchableOpacity onPress={this.playvideoinnetpage.bind(this,item.vd_link,item.vd_thumbnail,item.vd_id,item.vd_title)}>

      <Card
        containerStyle={{
          padding:0, 
          width:180,
          height:112,
          backgroundColor:'#000',
          borderColor:'#000',
          marginTop:10,
          marginLeft: 5,
          marginRight:5,
          marginBottom:5
        }}
        image={{uri:item.vd_thumbnail}}
        imageStyle={'stretch'}
      >

        <View style={{position:'relative',bottom:75,}}> 
          <Text numberOfLines={1} style={{color:'#fff',fontWeight:'bold',fontSize:14}}> {item.vd_title}</Text>
        </View>
      </Card>
    </TouchableOpacity>
  }
/>

【问题讨论】:

  • @manahor reddy 是那个解决方案吗??
  • 不,我只是正确地格式化了问题
  • 谢谢..你有什么解决办法吗??
  • 不,我不知道我来自android的java脚本。
  • 好的,不过还是谢谢

标签: javascript android reactjs react-native react-native-flatlist


【解决方案1】:

你可以在这里阅读答案 [How do I make a list (FlatList) automatically scroll through the elements using Animated?]

scrollToIndex = (index, animated) => {
   this.listRef && this.listRef.scrollToIndex({ index, animated })
 }

 componentDidMount() {  // use componentDidMount instead since the WillMount is getting deprecated soon
   setInterval(function() {
     const { sliderIndex, maxSlider } = this.state
     let nextIndex = 0

     if (sliderIndex < maxSlider) {
       nextIndex = sliderIndex + 1
     }

     this.scrollToIndex(nextIndex, true)
     this.setState({sliderIndex: nextIndex})
   }.bind(this), 3000)
 }

您实际上应该增加索引,而不是像上面的代码那样每 5000 毫秒将其设置为 1。保持 currentIndex、maxIndex 并在像上面一样递增 currentIndex 后使用 scrollToIndex 函数。请确保在使用 setInterval 更新 currentIndex 后修改状态

【讨论】:

  • 我应该在哪里写 scrollToIndex = (index, animated) => { this.listRef && this.listRef.scrollToIndex({ index, animated }) }
  • 在构造函数中??
  • 它只是一个函数。把它放在课堂上。不在构造函数内部。构造函数和componentDidMount之间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-12
  • 1970-01-01
  • 2019-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多