Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 未从react本机下拉选择器中选择和更新项目_Reactjs_React Native_React Native Android_React Native Ios - Fatal编程技术网

Reactjs 未从react本机下拉选择器中选择和更新项目

Reactjs 未从react本机下拉选择器中选择和更新项目,reactjs,react-native,react-native-android,react-native-ios,Reactjs,React Native,React Native Android,React Native Ios,我正在使用React原生下拉选择器来显示日期列表,但是当我在任何项目上选择时,都不会选择该值 完整代码: import React, {useEffect, useState} from 'react'; import {View, Text, StyleSheet} from 'react-native'; import {getMonthDate} from '../../../utils/dateUtils'; import Icon from 'react-native-vector-i

我正在使用React原生下拉选择器来显示日期列表,但是当我在任何项目上选择时,都不会选择该值

完整代码:

import React, {useEffect, useState} from 'react';
import {View, Text, StyleSheet} from 'react-native';
import {getMonthDate} from '../../../utils/dateUtils';
import Icon from 'react-native-vector-icons/FontAwesome';
import DropDownPicker from 'react-native-dropdown-picker';
import {getFullDate} from '../../../utils/dateUtils';
import DaysInAWeek from './DaysInAWeek';
export default function Header(props) {
  const [daysInAWeek, setDaysInAWeek] = useState([]);
  const data = props.data;
  // const end_ts = props.end_ts;
  // const start_ts = props.start_ts;
  const end_ts = 1605916800000;
  const start_ts = 1603238400000;

  let interval = 7 * 86400000;
  let arr = [];
  let new_arr = [];
  for (let i = start_ts; i < end_ts; i = i + interval) {
    arr.push(i);
  }

  for (var i = 0; i < arr.length; i += 2) {
    new_arr.push(arr.slice(i, i + 2));
  }

  let dateArr = [];

  for (let a of new_arr) {
    console.log('a', a);
    let label;
    if (a.length > 1) {
      label = getMonthDate(new Date(a[0])) + '-' + getMonthDate(new Date(a[1]));
    } else {
      label = `${getMonthDate(new Date(a[0]))}`;
    }
    let obj = {
      label,
      value: a,
    };
    dateArr.push(obj);
  }

  function onValSelect(val) {
    if (val.length > 1) {
      let arr = [];
      for (let i = val[0]; i <= val[1]; i += 86400000) {
        let date = getMonthDate(new Date(i));
        arr.push(date);
      }

      console.log('final arr', arr);
      setDaysInAWeek(arr);
    } else {
      console.log('single date', new Date(val));
      setDaysInAWeek(new Date(val));
    }
  }

  console.log('date Arr', dateArr);

  return (
    <View>
      <View style={styles.container}>
        {console.log('new array', dateArr)}
        {console.log('arr', arr)}
        <Icon
          name="arrow-left"
          size={20}
          color="#fff"
          style={{marginTop: 12}}
        />
        {console.log('----------date', dateArr)}
        {dateArr != null && (
          <DropDownPicker
            onChangeItem={value=>{
              onValSelect(value)
            }}
            items={dateArr}
            itemStyle={{
              // justifyContent: 'flex-start',
              flexDirection:'row'
            }}
            
            containerStyle={{height: 40,width:'80%',zIndex:2}}
          />
        )}
        {console.log('----------days', daysInAWeek)}
        
      </View>
      <DaysInAWeek daysInAWeek={daysInAWeek} />
    </View>
  );
}
const styles = StyleSheet.create({
  container: {
    backgroundColor: '#FE017E',
    // height: 56,
    zIndex:2,
    width: '100%',
    flexDirection: 'row',
    padding: 10,
  },
});

我哪里出错了?

当我在任何项目上选择时,值都没有被选择-似乎有点矛盾,你能解释什么是被选择的还是没有被选择的吗?您采取了哪些调试步骤?是否有任何错误日志?是否调用了onValSelect?如果是,它是否具有预期的val值?函数体中的所有数组循环是为了什么?看起来主要是为选择器构造选项?另外,我看到的是,日期对象保存到状态,而不是将其保留为数组setDaysInAWeeknew Dateval;。onValSelect未被调用,这就是问题所在,我已尝试删除视图控制台状态中的所有其他项,但该方法根本未被调用,非常奇怪,但我不确定原因您认为可以创建一个重现此问题的运行吗?