所有分类
  • 所有分类
  • 后端开发
React Native小白必看:ScrollView VS ListView,哪个更神秘?

React Native小白必看:ScrollView VS ListView,哪个更神秘?

Native提供的滚动视图组件,渲染一组视图,用户可以进行滑动响应交互,其常用属性如下:利用map遍历数据数组zodiac,将图片渲染到页面用于将一组相同类型的数据渲染到页面上,你只需要定义好数据源与单个组件如何渲染,它便会将所有数据渲染完

小伙伴们!今天咱就来说说React Native里的两款神奇组件:ScrollView和ListView。听到这儿,你可能有点懵逼:这都是什么鬼?别急,让我给你说来听听。


 this.slide(e)}
       onScrollBeginDrag={()=>{this.stopTimer()}}   //用户拖拽时停止自动轮播
       onScrollEndDrag={()=>{this.setTimer()}}    //拖拽结束后开始自动切换
 >
  {/*渲染轮播图片*/}
  {this.renderBanner()}
 
 
  {/*渲染底部指示标签点*/}
  {this.renderIndicate()}
 

来聊聊scrollview,这可是React Native里自带的一款神奇小零件。用这个小玩具,咱们就可以顺畅地滑动界面,而且还可以灵活动态地响应用户操作!那个scroll offset属性就是用来控制滚动方向的。比如想看水平方向的移动量,那直接拿event.nativeEvent.contentOffset.x瞅瞅就对了。

renderBanner(){
 return zodiac.map((item,index)=>
  
 )
}

renderIndicate(){
 let jsx=[];
 for (let i=0;i<zodiac.length;i++){
  //判断是否为当前页,若为当前页则指示点color为蓝色,否则为白色
  if (i===this.state.pageIndex){
   jsx.push(●)
  }else {
   jsx.push(●)
  }
 }
 return jsx;
}

接下来咱们得聊聊ListView了,这货特别厉害。你只要告诉它有哪些数据,以及怎么给每项单独地渲染,它就会把所有的数据都整整齐齐地展示在屏幕上~

slide(e){
 let offset=e.nativeEvent.contentOffset.x;      //获取x偏移量
 let index=Math.floor(offset/DevWidth);       //通过偏移量计算出当前页码
 this.setState({
  pageIndex:index
 })
}

说到ScrollView,你知道吗?只要你滑动成功了,那scrollView就会触发一个叫做onMomentumScrollEnd的方法。到时候呢我们就可以用个名叫slide的方法,顺便带上event参数传给他~

React Native小白必看:ScrollView VS ListView,哪个更神秘?

setTimer(){
 this.timer=setInterval(()=>{
  this.setState((preState)=>{           //更新pageIndex
   if(preState.pageIndex>=(zodiac.length-1)){   //如果页码达到上界则归零
    return {pageIndex:0}
   }else {
    return {pageIndex:preState.pageIndex+1}        //否则页码加一
   }
  });
  // 让图片偏移到页码所对应的页面
  let offset=this.state.pageIndex*DevWidth;  
  this.refs.scrollView.scrollTo({x:offset,y:0,animated:true});
 },2000)
}

有个牛逼的方法!咱们可以定个时钟让画面自己换图。就用setInterval搞个pageIndex时不时调个数字增1,然后让图片对齐到相应的页面上。计算方式很简单,页面宽幅乘以这个数字,这样就能得出当前页面的位置了。

componentWillUnmount() {
 clearInterval(this.timer);
}

说到ListView,这个技能满点的工具可有用了。只要设计好数据来源跟输出类型,它就能帮你生成一堆图标信息。举个例子,假如你家有一份json数据,想把它弄成一张图标配对图谱,那么毫无疑问,动作片ListView就是你最佳的伙伴!

哦对了,还有个超级牛X的功能!假如你有篇二维数组的数据集,有啥关系,ListView就能来帮你忙。把它们按照字母顺序排个序,再放到ListView中显示出来就行了。是不是特别方便呀?

let icons=require('./mockdata/icons.json').data;
constructor(props){
 super(props);
 let dataSource = new ListView.DataSource({rowHasChanged:(r1,r2)=>r1!==r2});
 this.state={
  iconSource:dataSource.cloneWithRows(icons),
 }
}

搞定,问题都解决了吗?ScrollView跟ListView都是React Native很好用的东西,可以帮咱们实现页面上下滑动和数据显示。不论是图片轮播还是图标列表,它俩都能满足~这次就给大伙儿讲一下这两样东西怎么用。希望对你们有用。有啥想说的或者疑问,直接留言或分享给好友。多谢!


原文链接:https://www.icz.com/technicalinformation/web/javascript/2024/03/11454.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?