You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中@react-native-community/picker仅显示数组最后一项求助

问题解决:Picker仅显示最后一项

你的问题出在venues数组的定义上——你把所有场馆的name和id都塞进了同一个对象里,而JavaScript对象中重复的键会被后面的内容覆盖,最终这个对象只剩下最后一组name: "Cheescake Factory", id: 4,所以map遍历的时候只生成了一个Picker.Item,自然只显示最后一项。

修正后的代码

import React, { Component } from "react";
import { Dimensions, View } from "react-native";
import {Picker} from '@react-native-community/picker';

const deviceWidth = Dimensions.get("window").width;

export default class Results extends Component {
constructor(props) {
  super(props);

  this.state = {
    // 修正:每个场馆是独立的对象,存放在数组中
    venues: [
      {"name": "Carmine's", "id": 0},
      {"name": "Carmines", "id": 1},
      {"name": "Joe's", "id": 2},
      {"name": "Johnny V's", "id": 3},
      {"name": "Cheescake Factory", "id": 4}
    ],
    selectedItem:''
  };
}

  render() {
   return (
      <View style={{flex:1}}>
       <Picker
       selectedValue={this.state.selectedItem}
       style={{width: deviceWidth, height: 40 }}
       onValueChange={(itemValue, itemIndex) => this.setState({selectedItem: itemValue})}>
       { this.state.venues.map( (v, key)=>{
         return <Picker.Item label={v.name} value={v.id} key={key} />
       }) }
       </Picker>
      </View>
   );
  }
}

补充说明

  • JavaScript对象不允许重复键名,后声明的同名键会直接覆盖前面的内容,这是语言基础规则
  • 必须确保数组中的每一项都是独立的对象,这样map方法才能遍历生成所有场馆选项

内容的提问来源于stack exchange,提问作者Pangit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:25:22