React Native中组件的封装使用

来源:互联网 发布:海尔品牌价值知乎 编辑:程序博客网 时间:2024/05/25 18:11

React Native中组件的封装使用

   不知不觉,入坑RN也有一个月了,本来就是从安卓原生转过来,刚入手是一脸懵逼的,到现在项目也写了几个功能界面, 算是一只脚迈进了RN的大门,学习新知识,总结很重要,古人说得好:温故而知新,是非常有科学道理的,所以时不时应该挤出点时间来做做笔记总结。这篇主要总结下组件复用。

一、 组件的封装复用

   RN的精髓就是组件的复用,随着写的界面增多,你会爱上这种操作,就像再搭建一座城堡,一块块砖组件而成,load一下,城堡就屹立在你眼前。下面举个项目中封装的比较简单的demo。
   
- 轮播图Swiper的封装
   我们的项目中,好几个页面都用到了轮播图,而且每个轮播图轮播的图片也是不一样的,这时候就应该考虑写个壳子,需要使用到这个轮播图的页面,把这个壳子拿来自己填充东西(轮播图片)进去,实现灵活的定制。轮播图的实现是采用了目前在RN上比较主流的Swiper,github上star4K多,算是比较稳定,之前有尝试过另一个控件viewpager,出现了一些奇怪的bug而弃之。下面看看我封装后的demo:Banner.js

render(){        let swiper = null;        if (this.state.visibleSwiper) {  //这里设置了visible是因为与页面底部导航有冲突,可忽略            swiper = <Swiper showButton={false}                             autoplay={true}                             height={this.props.height}   //高度可定制                             removeClippedSubviews={false}                             dot={<View style={styles.customDot} />}                             activeDot={<View style={styles.customActiveDot} />}                             paginationStyle={{                                 bottom: 10                             }}            >            //bannerData就是一组轮播图片,数组中每个图片的地址就是item,map映射到每个Image中                {this.props.bannerData.map(item => {                    return (                        <View style={{flex:1}}>                            <TouchableHighlight  >                                <Image source={{uri:item}} style={{width:360,height:this.props.height}}></Image>                                    </TouchableHighlight>                        </View>                    )                })}            </Swiper>;                } else {                swiper = <View></View>;            }        return(            <View style={{flexDirection:'row'}}>            {swiper}            </View>        )    };

在使用的页面中导入我们封装好了的这个轮播图,如下:

import Banner from '../../components/Banner' //sliderImgs就是轮播图数组[url1,url2,....],赋值给bannerData <Banner height={180} bannerData={sliderImgs} />
  • 小结
      组件的复用,其实就是子组件与父组件通信,被使用的一方就是子组件,被人拿去定制成为别人特有的组件,这时候子组件只要暴露出那些可以定制的属性,通过this.props.xxx,然后父组件就得根据子组件定义的属性来给出具体的属性值 xxx=“” 稍微写一点就得快一小时,时间真是不经花呢
原创粉丝点击