گرفتن مقدار Picker در react native


سلام دوستان.در این آموزش متنی قصد داریم یاد بگیریم که چجوری مقدار Picker در ReactNative رو بگیریم.React Native Picker که با Spinner هم در اپلیکیشن های Ios و Android شناخته میشه برای گرفتن یک مقدار از بین چندین مقدار مورد استفاده قرار میگیره.Picker بصورت پیشفرض یک مقدار را نشان میدهد و وقتی که کاربر بر روی آن کلیک میکند یک dialog box با چندین مقدار نمایش داده میشود.در این آموزش ما یک اپلیکیشن با ReactNative ایجاد میکنیم که یک Picker با چندین مقدار دارد و وقتی کاربر مقدار مورد نظر را انتخاب میکند،مقدار انتخاب شده با استفاده از Alert نمایش داده میشود.
1.ایمپورت کردن کامپوننت های StyleSheet, Alert, View, Button و Picker در پروژه.
1 2 3 |
import React, { Component } from 'react'; import { StyleSheet, Alert, View, Button, Picker } from 'react-native'; |
2.ایجاد یک متغیر به نام PickerValueHolder با state درون constructor.این متغیر مقدار آیتم انتخاب شده را دخیره میکند.
1 2 3 4 5 6 7 8 9 10 |
constructor(){ super(); this.state={ PickerValueHolder : '' } } |
3.ایجاد یک تابع به نام GetSelectedPickerItem.این تابع در رویداد onPress دکمه فراخوانی میشود.در این تابع ما مقدار آیتم انتخاب شده Picker را با استفاده از alert نمایش میدهیم.
1 2 3 4 |
GetSelectedPickerItem=()=>{ Alert.alert(this.state.PickerValueHolder); } |
4.اضافه کردن View در بلاک render’s return. از این View به عنوان Parent استفاده میشود و کامپوننت های Button و Picker درون این View قرار میگیرند.
1 2 3 4 5 6 7 8 9 |
render() { return ( <View style={styles.MainContainer}> </View> ); } |
5.اضافه کردن کامپوننت Picker درون View
selectedValue: مقدار آیتم انتخابی درون Picker را پس از انتخاب نمایش میدهد.
onValueChange: مقدار آیتم انتخابی را در state ذخیره میکند.
Picker.Item: برای نمایش آیتم های درون Picker مورد استفاده قرار میگیرد.
label: برای نمایش متنی که کاربر در صفحه گوشی میبیند،استفاده میشود.
value:مقداری که کاربر میخواهد انتخاب کند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
render() { return ( <View style={styles.MainContainer}> <Picker selectedValue={this.state.PickerValueHolder} onValueChange={(itemValue, itemIndex) => this.setState({PickerValueHolder: itemValue})} > <Picker.Item label="React Native" value="React Native" /> <Picker.Item label="Java" value="Java" /> <Picker.Item label="Html" value="Html" /> <Picker.Item label="Php" value="Php" /> <Picker.Item label="C++" value="C++" /> <Picker.Item label="JavaScript" value="JavaScript" /> </Picker> </View> ); } |
6.اضافه کردن کامپوننت Button درون View.ما در رویداد onPress دکمه تابع GetSelectedPickerItem را فراخوانی میکنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
render() { return ( <View style={styles.MainContainer}> <Picker selectedValue={this.state.PickerValueHolder} onValueChange={(itemValue, itemIndex) => this.setState({PickerValueHolder: itemValue})} > <Picker.Item label="React Native" value="React Native" /> <Picker.Item label="Java" value="Java" /> <Picker.Item label="Html" value="Html" /> <Picker.Item label="Php" value="Php" /> <Picker.Item label="C++" value="C++" /> <Picker.Item label="JavaScript" value="JavaScript" /> </Picker> <Button title="Get Selected Picker Value" onPress={ this.GetSelectedPickerItem } /> </View> ); } |
7.ایجاد استایل سفارشی
1 2 3 4 5 6 7 8 9 10 |
const styles = StyleSheet.create({ MainContainer: { flex: 1, justifyContent: 'center', margin: 20 } }); |
8.کد کامل برنامه در فایل App.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
import React, { Component } from 'react'; import { StyleSheet, Alert, View, Button, Picker } from 'react-native'; export default class App extends Component<{}> { constructor(){ super(); this.state={ PickerValueHolder : '' } } GetSelectedPickerItem=()=>{ Alert.alert(this.state.PickerValueHolder); } render() { return ( <View style={styles.MainContainer}> <Picker selectedValue={this.state.PickerValueHolder} onValueChange={(itemValue, itemIndex) => this.setState({PickerValueHolder: itemValue})} > <Picker.Item label="React Native" value="React Native" /> <Picker.Item label="Java" value="Java" /> <Picker.Item label="Html" value="Html" /> <Picker.Item label="Php" value="Php" /> <Picker.Item label="C++" value="C++" /> <Picker.Item label="JavaScript" value="JavaScript" /> </Picker> <Button title="Get Selected Picker Value" onPress={ this.GetSelectedPickerItem } /> </View> ); } } const styles = StyleSheet.create({ MainContainer: { flex: 1, justifyContent: 'center', margin: 20 } }); |
اسکرین شات در نسخه Android:
اسکرین شات در نسخه Ios:
دیدگاهتان را بنویسید