Cela fonctionne comme prévu, où le sélecteur reste sur l'élément sélectionné ...
<Picker
selectedValue={this.state.person}
onValueChange={(itemValue) => this.setState({person: itemValue})}
style={styles.picker}>
{Object.keys(coWorkers)
.map((result, index) =>
<Picker.Item
label={`${coWorkers[result].name}(${coWorkers[result].likes})`}
value={coWorkers[result].name}
key={index}
/>
)
}
</Picker>
Je veux obtenir plusieurs clés / valeurs de l'objet coWorkers
dans this.setState
, alors j'essaye ceci ...
<Picker
selectedValue={this.state.person}
onValueChange={(itemValue) => this.setState({person: itemValue.name, likes: itemValue.likes})}
style={styles.picker}>
{Object.keys(coWorkers)
.map((result, index) =>
<Picker.Item
label={`${coWorkers[result].name} (${coWorkers[result].likes})`}
value={coWorkers[result]}
key={index}
/>
)
}
</Picker>
Cependant, maintenant le sélecteur retourne en haut (this.state
est cependant correctement mis à jour).
2 réponses
Le type de prop value
pour le sélecteur doit être soit une chaîne, soit un entier. Cela n'apparaît pas clairement dans la documentation sur le site Web, mais vous pouvez le voir dans les commentaires du code source du sélecteur ici https://github.com/facebook/react-native/blob/master/Libraries/Components/Picker/Picker.js
Il effectue une simple vérification égale de la valeur selectedValue et de la valeur des éléments de sélection pour la traduire dans la compréhension native de PickerIOS. https: // github. com / facebook / react-native / blob / master / Libraries / Components / Picker / PickerIOS.ios.js # L53
Bien que le contenu soit le même, l'objet this.state.selectedValue
et correspondant coWorkers[result]
sont des objets différents
Vous pouvez générer des identifiants uniques pour chaque élément du tableau et les utiliser pour rechercher l'objet.
Votre itemValue.name ne correspond pas à vos collègues [résultat]
Questions connexes
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.