| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- import React, { useState, useMemo, useCallback, useEffect } from 'react';
- import DatePicker from '../../index';
- import { Button, Form, withField } from '../../../index';
- const FormDatePicker = withField(props => {
- const { value, onChange, ...rest } = props;
- const mValue = !value ? null : +value; // number => Date 传入组件
- const mOnChange = (newValue, newDate) => {
- // 直接用第2个参数更方便
- // 当删除日期时,newDate为undefined
- if (!newDate) {
- props.onChange(undefined);
- return;
- }
- // Date => number 反映给上层
- props.onChange(+newDate);
- };
- return <DatePicker {...rest} value={mValue} onChange={mOnChange} />;
- });
- const Container = ({ children }) => {
- return <div style={{ display: 'flex', flexDirection: 'column' }}>{children}</div>;
- };
- const Item = ({ children }) => (
- <div style={{ display: 'flex', alignItems: 'center', flexDirection: 'row', marginBottom: 20 }}>{children}</div>
- );
- function Demo(props = {}) {
- const [value, setValue] = useState('2019-10-01');
- const onChange = v => {
- console.log(v);
- setValue(v);
- };
- const createOnChangeWithLog = setFn => (str, date) => {
- console.log(str, date);
- if (typeof setFn === 'function') {
- setFn(str);
- }
- };
- const printArgs = (...args) => {
- console.log('printArgs: ', ...args);
- };
- const [open, setOpen] = useState(true);
- const [value2, setValue2] = useState(new Date('2019-10-02 8:30:02'));
- const [value3] = useState(['2019-10-01', '20191002']);
- const [value4, setValue4] = useState(['2019-10-01', '2019-10-09']);
- const [value5] = useState(['2019-10-01', '20191109']);
- const [value6, setValue6] = useState(['2019-10-01', '20191109']);
- const [value7, setValue7] = useState(new Date('2019-11-02 11:32:11'));
- const [value8, setValue8] = useState('2019-11-02 11:32:11');
- return (
- <Container>
- {/* <span>参数open受控</span>
- <DatePicker
- type="date"
- value={value}
- onChange={onChange}
- open={open}
- // defaultOpen={open}
- motion={false}
- onOpenChange={status => {
- printArgs(status);
- // setOpen(status);
- }}
- />
- <br /> */}
- <Item>
- <span>date: value + onChange</span>
- <DatePicker type="date" value={value} onChange={onChange} />
- </Item>
- <Item>
- <span>dateTime: value </span>
- <DatePicker type="dateTime" value={value2} onChange={printArgs} />
- </Item>
- <Item>
- <span>dateTime: value + random + onChange </span>
- <DatePicker type="dateTime" value={value8} onChange={createOnChangeWithLog(setValue8)} />
- <Button onClick={() => setValue8(new Date())}>Random Value</Button>
- </Item>
- <Item>
- <span>dateTime: value + onChange + format </span>
- <DatePicker type="dateTime" format={'yyyy年MM月dd日 HH:mm:ss'} value={value7} onChange={setValue7} />
- </Item>
- <Item>
- <span>dateTime: value + onChange</span>
- <DatePicker
- type="dateTime"
- value={value2}
- onChange={createOnChangeWithLog(setValue2)}
- onBlur={printArgs}
- />
- </Item>
- <Item>
- <span>dateTime: value + onConfirm + needConfirm</span>
- <DatePicker type="dateTime" value={value2} onConfirm={setValue2} needConfirm />
- </Item>
- <Item>
- <span>date multiple: value</span>
- <DatePicker type="date" value={value3} multiple onChange={printArgs} />
- </Item>
- <Item>
- <span>date multiple: value + onChange</span>
- <DatePicker type="date" value={value4} onChange={setValue4} multiple />
- </Item>
- <Item>
- <span>dateRange: value</span>
- <DatePicker type="dateRange" value={value5} onChange={printArgs} />
- </Item>
- <Item>
- <span>dateRange: value + onChange</span>
- <DatePicker type="dateRange" value={value6} onChange={setValue6} />
- </Item>
- <Item>
- <span>Form.DatePicker dateTime initValue + onChange</span>
- <Form>
- <Form.DatePicker initValue={new Date()} type={'dateTime'} />
- </Form>
- </Item>
- <Item>
- <span>withFied DatePicker dateTime initValue + onChange</span>
- <Form>
- <FormDatePicker
- field={'date'}
- initValue={new Date()}
- type={'dateTime'}
- inputReadOnly
- noLabel
- rules={[{ required: true, message: '值不能为空' }]}
- />
- </Form>
- </Item>
- </Container>
- );
- }
- export default Demo;
|