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.lxweimin.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.lxweimin.com/p/6302c4d48b97
(清晰)https://segmentfault.com/a/1190000009736867
(詳細)http://blog.csdn.net/qq_38453189/article/details/72810741
(scrollView,listView,flatList,sectionList的區別)http://www.lxweimin.com/p/6302c4d48b97
http://www.lxweimin.com/p/346474013915


(3)WebView

屬性:
  • source :需要加載網頁的網址
  • automaticallyAdjustContentInsets :是否自動調整內容,默認是true
 <WebView
           source={{uri: params.webview }}
           automaticallyAdjustContentInsets={true}
                    
     />

(常用屬性)http://www.lxweimin.com/p/bce419c39af3
(詳細)http://blog.csdn.net/sinat_17775997/article/details/60872714
(踩坑)http://www.lxweimin.com/p/f963839fca1a
效果圖:

webview

(ReactNative實現圖片上傳功能 )http://blog.csdn.net/codetomylaw/article/details/52446786
(React-native使用FormDate上傳圖片異常總結)http://www.lxweimin.com/p/b5c81d7dfbb9
(react-native圖片循環上傳七牛)http://www.lxweimin.com/p/1b78787c56be
(七牛上傳圖片的了解與使用)http://www.lxweimin.com/p/5d7b5324786d

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,546評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,570評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,505評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,017評論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,786評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,219評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,438評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,971評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,796評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,995評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,230評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,918評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,697評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容