Last Updated on : 2025-07-29 03:05:03download
PickerView is a container view that you can choose one from multiple selections. It is usually used in combination with components such as time selection and date selection.
Note: you must specify width and height values for
PickerView, otherwise rendering will not work.
Note: for more information, see Demo.
One PickerView represents one selector. In the PickerView, selectedValue represents the currently selected value, and onValueChange is the callback function after value changes by sliding.
import _ from "lodash";
import React, { Component } from "react";
import { View, StyleSheet, Text } from "react-native";
import { Picker } from "tuya-panel-kit";
import ExplorerLayout from "../../components/ExplorerLayout";
export default class PickerViewScene extends Component {
constructor(props) {
super(props);
this.state = {
languages: ["clojure", "elixir", "haskell", "scala"],
value: "elixir",
};
}
_handleChange = (value) => {
this.setState({ value });
console.log(value);
};
renderContent = () => {
return (
<View style={styles.pickerContainer}>
<Text style={styles.tip}>Please Choose Your Favorite Language:</Text>
<Picker
style={[styles.picker]}
itemStyle={styles.pickerItem}
selectedValue={this.state.value}
onValueChange={this._handleChange}
>
{this.state.languages.map((value) => (
<Picker.Item key={value} value={value} label={value} />
))}
</Picker>
</View>
);
};
renderPlayground = () => {
return <View />;
};
render() {
return (
<ExplorerLayout
renderContent={this.renderContent}
renderPlayground={this.renderPlayground}
/>
);
}
}
The time picker is the most commonly used scene of PickerView, and each selection is a PickerView. The example below implements a 12-hour time selector, which requires 3 PickerViews.
import _ from "lodash";
import React, { Component } from "react";
import { View, StyleSheet } from "react-native";
import { Picker } from "tuya-panel-kit";
import ExplorerLayout from "../components/ExplorerLayout";
import ControlNumber from "../components/ControlNumber";
export default class PickerViewScene extends Component {
constructor(props) {
super(props);
this.hours = _.times(12, (n) => _.padStart(n === 0 ? 12 : n, 2, "0"));
this.minutes = _.times(60, (n) => _.padStart(n, 2, "0"));
this.state = {
amPm: "AM",
hour: "12",
minute: "00",
};
}
_handleChange = (key) => (value) => {
const v = typeof value === "number" ? _.padStart(value, 2, "0") : value;
this.setState({ [key]: v });
};
renderContent = () => {
return (
<View style={styles.pickerContainer}>
<Picker
style={[styles.picker, styles.pickerLeft]}
itemStyle={styles.pickerItem}
selectedValue={this.state.amPm}
onValueChange={this._handleChange("amPm")}
>
{["AM", "PM"].map((value) => (
<PickerView.Item key={value} value={value} label={value} />
))}
</Picker>
<Picker
style={[styles.picker, styles.pickerMiddle]}
itemStyle={styles.pickerItem}
selectedValue={this.state.hour}
onValueChange={this._handleChange("hour")}
>
{this.hours.map((value) => (
<PickerView.Item key={value} value={value} label={value} />
))}
</Picker>
<Picker
style={[styles.picker, styles.pickerRight]}
itemStyle={styles.pickerItem}
selectedValue={this.state.minute}
onValueChange={this._handleChange("minute")}
>
{this.minutes.map((value) => (
<Picker.Item key={value} value={value} label={value} />
))}
</Picker>
</View>
);
};
renderPlayground = () => {
return (
<View>
<ControlNumber
min={1}
max={12}
title="hour"
value={+this.state.hour}
stepValue={1}
onChange={this._handleChange("hour")}
onComplete={this._handleChange("hour")}
/>
<ControlNumber
min={0}
max={59}
title="minute"
value={+this.state.minute}
stepValue={1}
onChange={this._handleChange("minute")}
onComplete={this._handleChange("minute")}
/>
</View>
);
};
render() {
return (
<ExplorerLayout
renderContent={this.renderContent}
renderPlayground={this.renderPlayground}
/>
);
}
}
PickerView uses PickerIOS on iOS system. For more information, see PickerIOS.Android system inherits from ViewPropTypes. For more information, see ViewPropTypes.The text color of the Picker option.
| Type | Required | Default value | Operating system |
|---|---|---|---|
| ColorPropType | No | '#cccccc' |
Android |
The color of the text selected by the Picker option.
| Type | Required | Default value | Operating system |
|---|---|---|---|
| ColorPropType | No | 'black' |
Android |
Divider color of the Picker option.
| Type | Required | Default value | Operating system |
|---|---|---|---|
| ColorPropType | No | '#cccccc' |
Android |
The number of items in the visible area of Picker.
| Type | Required | Default value | Operating system |
|---|---|---|---|
| number | No | 8 |
Android |
Alignment method of items of Picker.
| Type | Required | Default value | Operating system |
|---|---|---|---|
| string | No | 'center' |
Android |
Text size of items of Picker.
| Type | Required | Default value | Operating system |
|---|---|---|---|
| number | No | 20 |
Android |
Whether to simulate an endless loop of PickerItem.
| Type | Required | Default value | Operating system |
|---|---|---|---|
bool |
No | false |
all |
PickerView child element.
| Type | Required | Default value | Operating system |
|---|---|---|---|
PropTypes.node |
Yes | undefined |
all |
Picker.Item value.
| Type | Required | Default value | Operating system |
|---|---|---|---|
| string, number | No | undefined |
all |
Picker.Item label description.
| Type | Required | Default value | Operating system |
|---|---|---|---|
| string | No | undefined |
all |
Is this page helpful?
YesFeedbackIs this page helpful?
YesFeedback