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).

4
mikeriley131 14 juil. 2017 à 00:52

2 réponses

Meilleure réponse

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.

1
agent_hunt 13 juil. 2017 à 23:13

Votre itemValue.name ne correspond pas à vos collègues [résultat]

0
NickJ 8 mai 2018 à 03:11