React Native中的Picker显示错误

时间:2019-02-26 11:28:37

标签: android firebase react-native firebase-realtime-database picker

我正在尝试从Firebase数据库中获取数据并将其显示在Picker中。该项目从名为category的firebase数据库表中获取数据,并将其显示在React本机选择器中。但是选择器显示错误。我尝试了很多解决方案,但只有键或值的问题将从数据库中获取。我都想要

enter image description here

这是我的Firebase Db。下面是我的代码

import React from 'react';
import { StyleSheet, Text, View, TextInput, Picker } from 'react-native';
import DateTimePicker from 'react-native-modal-datetime-picker';
import moment from 'moment';
import * as firebase from 'firebase';
import {firebaseConfig} from './ApiKeys';
if (!firebase.apps.length) { firebase.initializeApp(firebaseConfig); }
console.ignoredYellowBox = ['Setting a timer',];
var pickerArr = [];
export default class App extends React.Component {
  constructor(props){
    super(props)

    this.state=({ 

      isDateTimePickerVisible: false,
      selecteddate:'Date',
      category:0,
      snapshotList:{},
    })
  }

  componentDidMount() {
    this._loadInitialState();

  }
  _loadInitialState = () => {

  //====================================

  firebase.database().ref('/category').once('value').then((snapshot)=> {
    this.setState({category:snapshot})

    console.log(this.state.category);
  })

  //====================================
    };
    loadUserTypes() {

      var snapshot = this.state.category;
      snapshot.forEach(userSnapshot => {
        var k = userSnapshot.key;
        var name = userSnapshot.val();
        pickerArr.push(<Picker.Item label={userSnapshot.key} value={userSnapshot.val()}/>);
        console.log("k="+ k +" "+"name="+name); //Showing Data correctly

      });
      return pickerArr;
    }


  _showDateTimePicker = () => this.setState({ isDateTimePickerVisible: true });

  _hideDateTimePicker = () => this.setState({ isDateTimePickerVisible: false });

  _handleDatePicked = (pickeddate) => {
    day   = pickeddate.getDate();
    month = pickeddate.getMonth();
    year  = pickeddate.getFullYear();
    console.log('A date has been picked: ' + day + '-' + month + '-' + year);
    exdate= moment(pickeddate).format('HH:mm')
    this.setState({selecteddate : exdate})
    this._hideDateTimePicker();
    console.log("cat "+ this.state.category.val())
  };

  onFocus = () => {
    this._handleDatePicked();
  }

  render() {
    return (
      <View style={styles.container}>
        <Text>Open up App.js to start working on your app!</Text>
        <Text 

        onPress={ () => this._showDateTimePicker() }
        value={this.state.selecteddate}

        >{this.state.selecteddate}</Text>
        {/* //--------------------------------------DateTimePicker */}
        <DateTimePicker
                      isVisible={this.state.isDateTimePickerVisible}
                      onConfirm={this._handleDatePicked}
                      onCancel={this._hideDateTimePicker}
                      mode={'time'}
                      datePickerModeAndroid={'spinner'}


                    />
            {/* //-------------------------------------- */}
            <Picker
              selectedValue={this.state.language}
              style={{height: 50, width: 100}}
              onValueChange={(itemValue, itemIndex) =>
                this.setState({language: itemValue})
              }>

              {/* -------------------Dynamic Picker Data------------------ */}
              <Picker.Item label='Salle de sport' value='default'/>
              {this.loadUserTypes()}
              {/* -------------------------------------------------------- */}
            </Picker>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

0 个答案:

没有答案