首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在react native中使用带有多日期选择器的handleChange?

如何在react native中使用带有多日期选择器的handleChange?
EN

Stack Overflow用户
提问于 2021-05-07 12:55:17
回答 1查看 94关注 0票数 0

我在React-Native的一个项目中工作,我必须使用多个日期和时间选择器,但我无法使用多日期选择器/时间选择器处理它的handleChange函数(使用react-native- me datetime-picker).Could你能告诉我怎么做吗?提前感谢!!

代码语言:javascript
复制
importing multiple times on different views:

//handleConfirm function
handleDateConfirm = (date) => {
console.log("date 1",date)
console.log("date 2",date)
console.log("date 3",date)
    this.setState({
      selectedDate: moment(date).format('MM/DD/YYYY'),
      isDatePickerVisible: false
    })
  }
View-1
<CalenderPicker isDateVisible={isDatePickerVisible} mode={'date'} minimumDate={moment(new Date()).add(1, 'h')} maximumDate={moment(new Date()).add(15, 'd').toDate()} handleDateConfirm={this.handleDateConfirm} onCancel={this.onCancel} />

View-2
<CalenderPicker isDateVisible={isDatePickerVisible} mode={'date'} minimumDate={moment(new Date()).add(1, 'h')} maximumDate={moment(new Date()).add(30, 'd').toDate()} handleDateConfirm={this.handleDateConfirm} onCancel={this.onCancel} />

View-3
<CalenderPicker isDateVisible={isDatePickerVisible} mode={'date'} minimumDate={moment(new Date()).add(1, 'h')} maximumDate={moment(new Date()).add(30, 'd').toDate()} handleDateConfirm={this.handleDateConfirm} onCancel={this.onCancel} />

//Common-Component
const CalenderPicker = ({ mode, isDateVisible,minimumDate,maximumDate,  handleDateConfirm, onCancel }) => { 
    return (
        <DateTimePickerModal
            mode={mode}
            isVisible={isDateVisible}
            minimumDate={minimumDate}
            maximumDate={maximumDate}
            display="default"
            onConfirm={handleDateConfirm}
            onCancel={onCancel}
        />
    )
}
EN

回答 1

Stack Overflow用户

发布于 2021-05-07 14:24:17

你可以这样做

Working Example

代码语言:javascript
复制
import * as React from 'react';
import { Text, View, StyleSheet, Button } from 'react-native';
import Constants from 'expo-constants';
import moment from 'moment';

import CalenderPicker from './components/CalendarPicker';

// An Array of Initial values
const Init = [
  {
    id: 1,
    value: '',
    visible: false,
  },
  {
    id: 2,
    value: '',
    visible: false,
  },
  {
    id: 3,
    value: '',
    visible: false,
  },
];

export default function App() {
  const [isDateVisible, setIsDateVisible] = React.useState(false);
  const [Data, SetData] = React.useState(Init);
  let initial = new Date(Date.now() + 3600 * 1000 * 25);

  // handles DateConfirmation
  const handleDateConfirm = (data, index) => {
    let temp = [...Data];
    temp[index].value = moment(data).format('MM/DD/YYYY');
    temp[index].visible = false;
    SetData(temp);
  };

  // Executed onCancel
  const onCancel = (index) => {
    let temp = [...Data];
    temp[index].visible = false;
    SetData(temp);
  };

  // Executed when user opens a modal
  const onOpen = (index) => {
    try {
      let temp = [...Data];
      temp[index].visible = true;
      SetData(temp);
    } catch (error) {}
  };

  return (
    <View style={styles.container}>
      <CalenderPicker
        isDateVisible={Data[0].visible}
        mode={'date'}
        handleDateConfirm={(data) => handleDateConfirm(data, 0)}
        onCancel={() => onCancel(0)}
      />
      <Button title="Pick 1st Date Time" onPress={() => onOpen(0)} />
      <Text>1st Date Time - {Data[0].value}</Text>

      <CalenderPicker
        isDateVisible={Data[1].visible}
        mode={'date'}
        handleDateConfirm={(data) => handleDateConfirm(data, 1)}
        onCancel={() => onCancel(1)}
      />
      <Button title="Pick 2nd Date Time" onPress={() => onOpen(1)} />
      <Text>2nd Date Time - {Data[1].value}</Text>

      <CalenderPicker
        isDateVisible={Data[2].visible}
        mode={'date'}
        handleDateConfirm={(data) => handleDateConfirm(data, 2)}
        onCancel={() => onCancel(2)}
      />
      <Button title="Pick 3rd Date Time" onPress={() => onOpen(2)} />
      <Text>3rd Date Time - {Data[2].value}</Text>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    paddingTop: Constants.statusBarHeight,
    backgroundColor: '#ecf0f1',
    padding: 8,
  },
});

和你的CalendarPicker.js

代码语言:javascript
复制
import React from 'react';
import DateTimePickerModal from 'react-native-modal-datetime-picker';

const CalenderPicker = ({
  mode,
  isDateVisible,
  minimumDate,
  maximumDate,
  handleDateConfirm,
  onCancel,
}) => {
  return (
    <DateTimePickerModal
      mode={mode}
      isVisible={isDateVisible}
      minimumDate={minimumDate}
      maximumDate={maximumDate}
      display="default"
      onConfirm={handleDateConfirm}
      onCancel={onCancel}
    />
  );
};

export default CalenderPicker;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67429200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档