Sono sicuro che c'è un modo per farlo, ma non riesco ancora a vedere come.Bind Picker alla lista di Picker.Item in React Native
Quello che mi piacerebbe fare è aggiungere un componente di selezione, ma piuttosto che codificare l'elenco degli elementi, recuperarlo da un servizio e fare in modo che il selettore sia associato a qualcosa che posso compilare in seguito.
Ecco cosa ho, ma la mia app non funzionerà nemmeno ora. Qualche idea per favore?
'use strict';
var React = require('react-native');
var {
Picker,
Text,
View
} = React;
var AvailableServices = React.createClass({
getInitialState() {
var fetchServicesUri = 'http://some.url/available_services';
fetch(fetchServicesUri)
.then((response) => response.json())
.then((responseJson) => {
console.log(responseJson);
var services = [];
for(var service in responseJson.services) {
services.push(<Picker.Item label={service.Label} value={service.Value}/>);
}
this.setState({
services: services
});
})
.catch((error) => {
console.warn(error);
})
.done();
return {
services: [],
selectedService: null
}
},
render() {
return (
<View>
<Text>Pick a service</Text>
<Picker
selectedValue={this.state.selectedService}
onValueChange={(service) => this.setState({selectedService:service})}
>
{this.state.services}
</Picker>
</View>
);
}
});
module.exports = AvailableServices;
Grazie per la tua risposta: l'ho provato e sicuramente ho fatto molto di più. Ora ottengo questo errore: "TypeError: undefined non è un oggetto (che valuta 'this.state.services.map')". È un problema con l'analisi del JSON restituito dalla chiamata di servizio a un oggetto. Se provo con il tuo esempio e uso alcuni caratteri hard-coded, funziona perfettamente. Grazie! – Michael
@ Michael stavi chiamando .map su un array? –
Posso chiedere a quale oggetto PickerItem è usato? Non lo vedo referenziato da nessuna parte. (Sono nuovo di RN e sto cercando di capire.) – grantwparks