React Native学习之路(11) - 两种方式实现城市三级联动 + (react-narive-picker)+ (sectionList高性能的分组列表组件)+ (webview)

(1) react-native-picker第三方组件

  • (1)安装
npm install react-native-picker --save
  • (2) link
react-native link react-native-picker
  • (3) 引入
import Picker from 'react-native-picker'
  • (4) 使用
    (一) Picker.init选项
  • pickerData :数据源
  • selectedValue :默认选择第几项
  • pickerConfirmBtnText :确定按钮
  • pickerCancelBtnText :取消按钮
  • pickerTitleText :pickerToolBar的标题
  • pickerToolBarBg :顶部菜单背景(pickerToolBar背景)
  • pickerBg :选项内容的背景
  • pickerToolBarFontSize :顶部菜单文字大小
  • pickerFontSize :选项内容文字大小
  • onPickerConfirm() :点击确定按钮后执行的函数
  • onPickerCancel() :取消后执行的回调函数
  • onPickerSelect() : 选择后执行的回掉函数

示例代码:

_pickerShow(){
        Picker.init({
            pickerData: [
                    {
                      北京:[
                              {
                                  朝阳区:['艾欧尼亚','暗影岛']
                              },
                              {
                                  东城区:['艾欧尼亚2','暗影岛2']
                              }
                             ]
                    },

                    {
                        重庆:[
                            {
                                渝北区:['光电园','嘉州']
                            },
                            {
                                江北区:['观音桥','华新街']
                            }
                        ]
                    },

                ],
            selectedValue: ['重庆','渝北区','嘉州'],
            pickerConfirmBtnText:'确定',
            pickerCancelBtnText:'取消',
            pickerTitleText:'选择城市',
            pickerToolBarBg: [232, 232, 232, 1],
            pickerBg:[245,245,245,1],
            pickerToolBarFontSize: 16,
            pickerFontSize: 20,
            onPickerConfirm: (data) => {
                // console.log(data)
                var pp = JSON.stringify(data)

                AsyncStorage.setItem('cityContent',pp)

                AsyncStorage.getItem('cityContent').then( (data) => {
                    var mm = JSON.parse(data)

                    this.setState({
                        cityContent: mm
                    })
                })
            }
        });
        Picker.show();
    }


----------------------------------------------------

 <TouchableNativeFeedback  
       onPress={ this._pickerShow.bind(this) }
  >
             <View style={ styles.cityContainer}>
                       <Text style={ styles.cityText}>选择城市:</Text>
                       <Text style={styles.cityText_showtext}>
                            {this.state.cityContent}
                       </Text>
            </View>
 </TouchableNativeFeedback>

(github地址)https://github.com/beefe/react-native-picker/blob/master/README.md
http://www.jianshu.com/p/90f8d1f3d638

效果图

效果图2

(2) sectionList分组列表组件 (这个组件踩了很多坑)

(1)常用属性:
  • sections : 数据源,数据格式是数组Array
  • renderItem :每一个section(分组)中的item(列表)
  • renderSectionHeader :每个section(分组)中的header(头部)
  • keyExtractor :为每一个item生成唯一的key,也可以在所有的对象数组中都加上key,就不会出现黄色的缺少key的警告
  • refreshing :是否处于刷新状态(和flatList,listView一样)
  • onRefresh :下拉刷新 (和flatList,listView一样)
  • onEndReached :上拉加载(和flatList,listView一样)
  • onEndReachedThreshold :到底部多大距离触发上拉加载(和flatList,listView一样)
  • ItemSeparatorComponent :每个item的分割组件,不会出现在第一行之前和最后一行之后(注意是组件哦,第一个字母要大写)
  • SectionSeparatorComponent :每个分组的分割组件。(注意是组件哦,第一个字母要大写)
  • ListHeaderComponent :头部组件(注意是组件哦,第一个字母要大写)
  • ListFooterComponent :尾部组件(注意是组件哦,第一个字母要大写)
(2)关于sectios数据源
  • 注意,这里坑比较多
  • (1) sectons数组里面,必须是 key和data,不能换成其他的属性变量,比如:data不能换成value
  • (2) 数据的格式必须是:
const array =  [     
       {  key:'xxx',data:[ {title:'xxx',content:'xxx'} ,{title:'xxx',content:'xxx'}]  } ,
       {  key:'xxx',data:[ {title:'xxx',content:'xxx'} ,{title:'xxx',content:'xxx'}]  } ,
        ....
    ]
(3) 使用例子
render() {
        return (
            <View style={styles.container}>
                <SectionList
                    sections={ Data.data }
                    renderItem= { this._renderItem }
                    renderSectionHeader = { this._renderSectionHeader}
                    keyExtractor={(item,index)=>("index"+index+item)}
                    SectionSeparatorComponent={()=><View style={{height:20,backgroundColor:'blue'}}></View>}
                    ItemSeparatorComponent={ () => <View style={{height:3,backgroundColor:'#ffb02e'}}></View>}
                />
            </View>
        );
    }
-----------------------------------------------------
 _renderItem(item){
        console.log(item)
        return(
            <View>
                <Text style={{ color: 'blue' }}>{ item.item.title }</Text>
                <Text style={{ color: 'green' }}>{ item.item.content }</Text>
            </View>
        )
    }

    _renderSectionHeader(header) {
        return (
            <Text  style={{ color: 'red' }}>
                { header.section.key}
            </Text>
        )
    }
----------------------------------------
mock的JSON数据:引入是取名是Data,所以sections数据源用Data.data取到数组
{
    "data":[
        {
            "key":"居家易肝病",
            "data":[
                { "title": "53种病停止输注抗菌药 乱输液有七大危害",
                  "content":"http://jiankang.163.com/17/0801/14/CQOQGE2N0038804U.html",
                  "date":"2017-08-01 14:00",
                  "image":"http://imgsize.ph.126.net/?imgurl=http://cms-bucket.nosdn.127.net/32e39ba9aed74dfa845708493f897ba320170801140018.png_150x100x1x85.jpg"
                },
                { "title": "生男生女神药”真的神?不靠谱别上当",
                    "content":"http://jiankang.163.com/17/0801/14/CQOQGE2N0038804U.html",
                    "date":"2017-07-31 12:10",
                    "image":"http://imgsize.ph.126.net/?imgurl=http://cms-bucket.nosdn.127.net/44f4e117250d49e8aa9f0150e7b503a820170731121632.png_150x100x1x85.jpg"
                },
                { "title": "专家建议:预防药物性肝病莫乱服药",
                    "content":"http://jiankang.163.com/17/0801/14/CQOQGE2N0038804U.html",
                    "date":"2017-08-01 14:00",
                    "image":"http://imgsize.ph.126.net/?imgurl=http://cms-bucket.nosdn.127.net/a46d0f817efe42e8aa93b28fd747e58220170728100007.png_150x100x1x85.jpg"
                },
                { "title": "北京人期望寿命82.03岁 高于全国平均水平",
                    "content":"http://jiankang.163.com/17/0801/14/CQOQGE2N0038804U.html",
                    "date":"2017-08-01 14:00",
                    "image":"http://imgsize.ph.126.net/?imgurl=http://cms-bucket.nosdn.127.net/32e39ba9aed74dfa845708493f897ba320170801140018.png_150x100x1x85.jpg"
                }, { "title": "人社部解读36种药品进入医保药品目录",
                    "content":"http://jiankang.163.com/17/0801/14/CQOQGE2N0038804U.html",
                    "date":"2017-08-01 14:00",
                    "image":"http://imgsize.ph.126.net/?imgurl=http://cms-bucket.nosdn.127.net/32e39ba9aed74dfa845708493f897ba320170801140018.png_150x100x1x85.jpg"
                }

            ]
        },
        {
            "key":"居家易肺病",
            "data":[
                { "title": "53种病停止输注抗菌药 乱输液有七大危害",
                    "content":"http://jiankang.163.com/17/0801/14/CQOQGE2N0038804U.html",
                    "date":"2017-08-01 14:00",
                    "image":"http://imgsize.ph.126.net/?imgurl=http://cms-bucket.nosdn.127.net/32e39ba9aed74dfa845708493f897ba320170801140018.png_150x100x1x85.jpg"
                },
                { "title": "生男生女神药”真的神?不靠谱别上当",
                    "content":"http://jiankang.163.com/17/0801/14/CQOQGE2N0038804U.html",
                    "date":"2017-07-31 12:10",
                    "image":"http://imgsize.ph.126.net/?imgurl=http://cms-bucket.nosdn.127.net/44f4e117250d49e8aa9f0150e7b503a820170731121632.png_150x100x1x85.jpg"
                },
                { "title": "专家建议:预防药物性肝病莫乱服药",
                    "content":"http://jiankang.163.com/17/0801/14/CQOQGE2N0038804U.html",
                    "date":"2017-08-01 14:00",
                    "image":"http://imgsize.ph.126.net/?imgurl=http://cms-bucket.nosdn.127.net/a46d0f817efe42e8aa93b28fd747e58220170728100007.png_150x100x1x85.jpg"
                },
                { "title": "北京人期望寿命82.03岁 高于全国平均水平",
                    "content":"http://jiankang.163.com/17/0801/14/CQOQGE2N0038804U.html",
                    "date":"2017-08-01 14:00",
                    "image":"http://imgsize.ph.126.net/?imgurl=http://cms-bucket.nosdn.127.net/32e39ba9aed74dfa845708493f897ba320170801140018.png_150x100x1x85.jpg"
                }, { "title": "人社部解读36种药品进入医保药品目录",
                    "content":"http://jiankang.163.com/17/0801/14/CQOQGE2N0038804U.html",
                    "date":"2017-08-01 14:00",
                    "image":"http://imgsize.ph.126.net/?imgurl=http://cms-bucket.nosdn.127.net/32e39ba9aed74dfa845708493f897ba320170801140018.png_150x100x1x85.jpg"
                }

            ]
        }


    ]
}

效果图:

效果图

http://blog.csdn.net/mengks1987/article/details/70236823
http://www.jianshu.com/p/6302c4d48b97
(清晰)https://segmentfault.com/a/1190000009736867
(详细)http://blog.csdn.net/qq_38453189/article/details/72810741
(scrollView,listView,flatList,sectionList的区别)http://www.jianshu.com/p/6302c4d48b97
http://www.jianshu.com/p/346474013915


(3)WebView

属性:
  • source :需要加载网页的网址
  • automaticallyAdjustContentInsets :是否自动调整内容,默认是true
 <WebView
           source={{uri: params.webview }}
           automaticallyAdjustContentInsets={true}
                    
     />

(常用属性)http://www.jianshu.com/p/bce419c39af3
(详细)http://blog.csdn.net/sinat_17775997/article/details/60872714
(踩坑)http://www.jianshu.com/p/f963839fca1a
效果图:

webview

(ReactNative实现图片上传功能 )http://blog.csdn.net/codetomylaw/article/details/52446786
(React-native使用FormDate上传图片异常总结)http://www.jianshu.com/p/b5c81d7dfbb9
(react-native图片循环上传七牛)http://www.jianshu.com/p/1b78787c56be
(七牛上传图片的了解与使用)http://www.jianshu.com/p/5d7b5324786d

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容