Как сделать выпадающие поля выбора в React Native с Formik
Выпадающие поля выбора - обычная функция во многих формах в мобильных и веб-приложениях. Они позволяют пользователю выбрать один элемент из списка похожих элементов. Это могут быть дни, месяцы, города, страны или любые другие категории. Эта статья покажет вам, как разместить раскрывающиеся поля выбора в React Native и Formik.
Шаг 1. Создайте новый проект, поддерживающий реакцию, с помощью expo. Назовите это SelectBoxApp
expo init SelectBoxApp
Шаг 2. Затем установите в приложение библиотеку Formik. Прочтите документацию Formik здесь.
npm install formik --save
Шаг 3. Установите Axios.
npm install axios --save
Шаг 4. Установите react-native-paper
npm install react-native-paper
Шаг 5. Установите response-native-community / picker.
npm install @react-native-community/picker --save
См. Документацию @ response-native-community / picker здесь.
Шаг 6. Импортируйте реакцию в файл app.js.
import React from 'react';
Шаг 7. Импортируйте axios в файл app.js.
import axios from 'axios';
Шаг 8: Импортируйте компоненты View, Text и Alert из react-native в ваш app.js
import { View, Text, Alert} from 'react-native';
Шаг 9. Импортируйте компоненты Button, Title и TextInput из react-native-paper в ваш файл app.js
import { Button, Title, TextInput } from 'react-native-paper';
Шаг 10. Импортируйте ловушку useFormik из formik в файл app.js.
import { useFormik } from 'formik';
Шаг 11. Импортируйте средство выбора из @ response-native-community / picker в файл app.js.
import { Picker } from '@react-native-community/picker'
Это полный список необходимого импорта.
import React, { useState, useEffect } from 'react'; import axios from 'axios'; import { View, Text, Alert} from 'react-native'; import { Button } from 'react-native-paper'; import { useFormik } from 'formik'; import { Picker } from '@react-native-community/picker'
Шаг 12. Создайте постоянную переменную с именем App, которая будет содержать функцию жирной стрелки.
const App = () => { }; export default App;
Шаг 13: внутри приложения создайте массив, который будет содержать параметры для нашего раскрывающегося списка выбора. Назовите это городами.
const cities = [ {name:"Los Angeles", id: 1}, {name:"Philadelphia", id: 2}, {name:"Chicago", id: 3}, {name:"Washington DC", id: 4}, {name:"New York", id: 5}, {name:"San Diego", id: 6}, {name:"Fort Worth", id: 7}, {name:"Houston", id: 8}, {name:"Cleveland", id: 9}, {name:"Pittsburg", id: 10}, {name:"Detroit", id: 11}, {name:"Jacksonville", id: 12}, {name:"Denver", id: 13}, {name:"Columbus", id: 14}, {name:"El Paso", id: 15}, {name:"New Orleans", id: 16}, {name:"Cincinnati", id: 17}, {name:"Nashville", id: 18}, {name:"Miami", id: 19}, {name:"Tampa", id: 20}, {name:"Bakersfield", id: 22}, {name:"Tuscon", id: 23}, {name:"Baltimore", id: 25}, {name:"St Louis", id: 26}, {name:"Las Vegas", id: 27}, {name:"Memphis", id: 28}, {name:"Seatle", id: 29}, {name:"San Fransisco", id: 30}, ]
Шаг 14. Внутри приложения. Создайте постоянную переменную для хранения возвращаемого значения ловушки useFormik.
const formik = useFormik();
Шаг 15: Добавьте свойство city_name к свойству initialValues.
const formik = useFormik({ initialValues: { city_name: '' }, });
Шаг 16. Для свойства onSubmit сделайте HTTP-запрос с помощью axios для отправки данных в конечную точку API.
const formik = useFormik({ initialValues: { city_name: '' }, onSubmit: values => { axios({ method: 'post', url: <domain-name> + 'url', data: { 'city_name': values.city_name}, headers: {'Content-Type': 'application/json'} }).then(response => { }).catch(err => { Alert.alert('An error occurred!', err.message, [{ text: 'Okay' }]); })} });
В операторе возврата добавьте элемент выбора и элемент выбора.
return( <View> <Picker enabled={true} mode="dropdown" placeholder="Select City" onValueChange={formik.handleChange('city_name')} selectedValue={formik.values.city_name} > {cities.map((item) => { return (<Picker.Item label={item.name.toString()} value={item.name.toString()} key={item.id.toString()} />) })} </Picker> </View> )
Шаг 17. Затем добавьте кнопку отправки под средством выбора.
return( <View> <Picker enabled={true} mode="dropdown" placeholder="Select City" onValueChange={formik.handleChange('city_name')} selectedValue={formik.values.city_name} > {cities.map((item) => { return (<Picker.Item label={item.name.toString()} value={item.name.toString()} key={item.id.toString()} />) })} </Picker> <Button mode="contained" title='submit' onPress={formik.handleSubmit} > Enter </Button> </View> )
Окончательный файл app.js должен выглядеть так.
import React, { useState, useEffect } from 'react'; import axios from 'axios'; import { View, Text, Alert} from 'react-native'; import { Button } from 'react-native-paper'; import { useFormik } from 'formik'; import { Picker } from '@react-native-community/picker' const App = () => { const cities = [ {name:"Los Angeles", id: 1}, {name:"Philadelphia", id: 2}, {name:"Chicago", id: 3}, {name:"Washington DC", id: 4}, {name:"New York", id: 5}, {name:"San Diego", id: 6}, {name:"Fort Worth", id: 7}, {name:"Houston", id: 8}, {name:"Cleveland", id: 9}, {name:"Pittsburg", id: 10}, {name:"Detroit", id: 11}, {name:"Jacksonville", id: 12}, {name:"Denver", id: 13}, {name:"Columbus", id: 14}, {name:"El Paso", id: 15}, {name:"New Orleans", id: 16}, {name:"Cincinnati", id: 17}, {name:"Nashville", id: 18}, {name:"Miami", id: 19}, {name:"Tampa", id: 20}, {name:"Bakersfield", id: 22}, {name:"Tuscon", id: 23}, {name:"Baltimore", id: 25}, {name:"St Louis", id: 26}, {name:"Las Vegas", id: 27}, {name:"Memphis", id: 28}, {name:"Seatle", id: 29}, {name:"San Fransisco", id: 30}, ] const formik = useFormik({ initialValues: { city_name: '' }, onSubmit: values => { axios({ method: 'post', url: <domain-name> + 'url', data: { 'city_name': values.city_name}, headers: {'Content-Type': 'application/json'} }).then(response => { }).catch(err => { Alert.alert('An error occurred!', err.message, [{ text: 'Okay' }]); })} }); return( <View> <Picker enabled={true} mode="dropdown" placeholder="Select City" onValueChange={formik.handleChange('city_name')} selectedValue={formik.values.city_name} > {cities.map((item) => { return (<Picker.Item label={item.name.toString()} value={item.name.toString()} key={item.id.toString()} />) })} </Picker> <Button mode="contained" title='submit' onPress={formik.handleSubmit} > Enter </Button> </View> )} export default App;
Наконец, протестируйте приложение.
И вот оно. Надеюсь, вы нашли это полезным. Я вернусь с более интересными статьями. Спасибо за чтение.
Больше контента на plainenglish.io