ReactNative: 使用選擇器組件Picker組件


一、簡介

本系列博客已經介紹過了日期選擇器的使用,日期選擇器是高度封裝的組件,開發者可以選擇最原始的選擇器組件Picker組件進行定制,它是跨平台的組件。Picker組件需要配合Picker.Item組件一起使用。Picker.Item組件是Picker組件的子項,用來設置Picker組件值的。Picker.Item組件可以嵌套多個Picker.Item組件。

 

二、Picker組件API

Picker組件提供的都是靜態屬性,分析每一個屬性的作用如下所示:

//選擇器樣式
style: pickerStyleType

//選中的子項的值
selectedValue: React.PropTypes.any,

//當切換子項時調用
onValueChange: React.PropTypes.func

//選擇器是否能夠交互, 僅限安卓使用
enabled: React.PropTypes.bool

//選擇器模式,枚舉:dialog 對話框  dropdown:下落, 僅限安卓使用
mode: React.PropTypes.oneOf(['dialog', 'dropdown'])

//子項的樣式,僅限iOS使用
itemStyle: itemStylePropType

//在對話框模式下在Android上用作對話框的標題, 僅限安卓使用
prompt: React.PropTypes.string

//組件唯一標識,便於查詢到該組件
testID: React.PropTypes.string

 

三、Picker.Item組件API

Picker.Item組件提供的都是屬性只有幾個,但是非常常用,分析每一個屬性的作用如下所示:

//此項目要顯示的文字
label: React.PropTypes.string.isRequired

//選擇此項目后,傳遞給選擇器的onValueChange回調的值。 可以是字符串或整數。
value: React.PropTypes.any

//此項目要顯示的文字的顏色,僅限安卓使用
color: ColorPropType

//唯一標識
testID: React.PropTypes.string

 

四、使用

看了一下文檔,簡單實現一下,示例如下:

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 * @flow
 */

import React, { Component } from 'react';

import {
    AppRegistry,
    StyleSheet,
    View,
    Picker
} from 'react-native';


export default class ReactNativeDemo extends Component {

    //默認選中的值
    state = {
        language:'swift'
    };

    render() {
        return (
            <View style={[styles.flex,styles.bgColor,styles.center]}>
                <Picker
                    style={{width:200, height:50}}
                    selectedValue={this.state.language}
                    onValueChange={(lang) => this.setState({language: lang})}>
                    <Picker.Item label="Java" value="java" />
                    <Picker.Item label="JavaScript" value="js" />
                    <Picker.Item label="Swift" value="swift" />
                    <Picker.Item label="Objective-C" value="oc" />
                </Picker>
            </View>
        );
    }
}

const styles = StyleSheet.create({
    flex: {
        flex: 1
    },
    bgColor: {
      backgroundColor: 'white'
    },
    center: {
        alignItems: 'center',
        justifyContent: 'center',
    }
});

AppRegistry.registerComponent('ReactNativeDemo', () => ReactNativeDemo);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM