Ich habe einen Picker in meiner App, und ich möchte dies mit Daten auf dem Server abgerufen, habe ich die Daten in einem Zustand der App, aber ich don ' t wissen, wie die App machen den Picker zu aktualisieren, wenn die Daten abgerufen wirdWie man Picker (Android) von nativen mit Fetch füllen
constructor(props) {
super(props);
this.state = {
isLoading: false,
client: '',
clients: null
};
}
componentDidMount() {
this.fetchData();
}
ich habe dies in meiner Ansicht
<Picker
style={styles.picker}
itemStyle={styles.items}
selectedValue={this.state.client}
onValueChange={(cli) => this.setState({client: cli})}
prompt="Seleccione un cliente" >
<Picker.Item label="Cliente 1" value="1" />
<Picker.Item label="Cliente 2" value="2" />
<Picker.Item label="Cliente 5" value="5" />
<Picker.Item label="Cliente 4" value="4" />
<Picker.Item label="Cliente 3" value="3" />
<Picker.Item label="Cliente 9" value="9" />
<Picker.Item label="Cliente 8" value="8" />
</Picker>
und die FetchData Funktion
fetchData() {
var baseURL = 'http://192.168.100.11:3000/clients';
fetch(baseURL, {
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
}
})
.then((response) => response.json())
.then((responseData) => {
if(responseData.message){
this.setState({isLoading: !this.state.isLoading});
alert(responseData.message);
}else{
this.setState({isLoading: !this.state.isLoading, clients:responseData});
}
})
.done();
}
Die Sache ist, wie kann ich den Picker aktualisieren, wenn die Daten abgerufen werden.
dank
mein Anfangszustand ist null, weil ich einen Abruf zu machen, und die Daten kommen wie diese [{ „id“: 3, "name": "client 3"}, {"id": 2, "name": "client 2"}] ... also mache ich so etwas mit deinem Beispiel {this.state.clients.map ((data) => {return })} ... aber das besagt, dass null kein Objekt ist –
xploshioOn
Nun, ich setze Clients mit diesem [{ "id": "1", "name": "loading ..."}] im initialen zustand und mit einigen änderungen funktioniert es, danke für die hilfe. – xploshioOn