Os voy a enseñar cómo crear un componente picker en Android/iOS con React Native.


Lo primero que tenemos que hacer es importar la librería react-native-picker-select
Para importar esta librería, tenemos que ejecutar estos dos comandos (uno para la librería y otro para la dependencia):
npm install react-native-picker-select expo install @react-native-picker/picker
Una vez instalada, ya podemos crear el componente. Vamos a crear un nuevo componente y añadir lo siguiente:
import SelectInputPicker from 'react-native-picker-select';
Ahora vamos a crear el render:
const [valueInput, setValueInput] = useState(""); var arrayLista= [ { label: "Coches", value: 'coches' }, { label: "Barcos", value: 'barcos' } ]; return ( <SelectInput onValueChange={(value) => setValueInput(value)} items={arrayLista} /> );
Hemos creado todas las variables necesarias para crear nuestro Picker:
- Primero creamos un State para poder guardar/actualizar el valor seleccionado en el picker.
- arrayLista es la lista de valores que queremos que aparezca en el picker (es un JSON).
- Se crea el componente que hemos importado:
- onValueChange –> Obtiene el valor que ha seleccionado el usuario.
- items –> Asigna los valores creados en arrayLista (JSON)
Con esto ya tenemos nuestro componente funcionando en iOS/Android.
Si queremos ponerle un valor por defecto, tendremos que añadir placeholder de la siguiente manera:
placeholder={{ label: "Selecciona un transporte", value: 0 }}
Hay que añadir label, value para que muestre y funcione correctamente el placeholder.
Queda de la siguiente forma:
const [valueInput, setValueInput] = useState(""); var arrayLista= [ { label: "Coches", value: 'coches' }, { label: "Barcos", value: 'barcos' } ]; return ( <SelectInput onValueChange={(value) => setValueInput(value)} items={arrayLista} placeholder={{ label: "Selecciona un transporte", value: 0 }} /> );

Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.