跳转到内容

DateOfBirth

出生日期选择器,支持顺序、月份样式与年龄校验。

import { DateOfBirth } from 'asterui'

基础

默认的月/日/年选择器。

Default (MDY, 120 years)
import { DateOfBirth, Card, Space, Typography } from 'asterui'

function App() {
  return (
      <Card>
        <Space direction="vertical" size="sm">
          <Text type="secondary">Default (MDY, 120 years)</Text>
          <DateOfBirth />
        </Space>
      </Card>
    )
}

export default App

顺序

切换为日/月/年顺序。

DD/MM/YYYY order
import { DateOfBirth, Card, Space, Typography } from 'asterui'

function App() {
  return (
      <Card className="w-full max-w-xl">
        <Space direction="vertical" size="sm">
          <Text type="secondary">DD/MM/YYYY order</Text>
          <DateOfBirth order="dmy" />
        </Space>
      </Card>
    )
}

export default App

月份网格

紧凑的月份选择网格。

Month grid + compact day/year
import { DateOfBirth, Card, Space, Typography } from 'asterui'

function App() {
  return (
      <Card className="w-full max-w-xl">
        <Space direction="vertical" size="sm">
          <Text type="secondary">Month grid + compact day/year</Text>
          <DateOfBirth monthStyle="grid" yearStyle="select" />
        </Space>
      </Card>
    )
}

export default App

年份输入

使用数字年份输入与年龄规则。

Year input + custom age rules
import { DateOfBirth, Card, Space, Typography } from 'asterui'

function App() {
  return (
      <Card className="w-full max-w-xl">
        <Space direction="vertical" size="sm">
          <Text type="secondary">Year input + custom age rules</Text>
          <DateOfBirth yearStyle="input" minAge={18} yearSpan={90} />
        </Space>
      </Card>
    )
}

export default App

受控

通过本地状态控制值。

Controlled value
{"month":"1","day":"15","year":"1995"}
import { DateOfBirth, Card, Space, Typography } from 'asterui'

function App() {
  const [value, setValue] = useState({ month: '1', day: '15', year: '1995' })
  
  return (
      <Card className="w-full max-w-xl">
        <Space direction="vertical" size="sm">
          <Text type="secondary">Controlled value</Text>
          <DateOfBirth value={value} onChange={setValue} />
          <Text type="secondary" className="text-xs">
            {JSON.stringify(value)}
          </Text>
        </Space>
      </Card>
    )
}

export default App

表单

与 Form 集成并提交结果。

Form integration

 

import { DateOfBirth, Card, Space, Typography, Form, Button, Modal } from 'asterui'

function App() {
  return (
      <Card className="w-full max-w-xl">
        <Space direction="vertical" size="sm">
          <Text type="secondary">Form integration</Text>
          <Form
            form={form}
            onFinish={handleFinish}
          >
            <Form.Item
              name="dob"
              {...DateOfBirth.required()}
            >
              <DateOfBirth />
            </Form.Item>
            <Button htmlType="submit">Submit</Button>
          </Form>
        </Space>
      </Card>
    )
}

export default App
属性说明类型默认值
value受控值{ month?: string; day?: string; year?: string }-
defaultValue默认值{ month?: string; day?: string; year?: string }-
onChange变更回调(value) => void-
order字段顺序'mdy' | 'dmy' | 'ymd''mdy'
monthStyle月份样式'select' | 'grid''select'
yearStyle年份样式'select' | 'input''select'
yearSpan年份范围number120
minAge最小年龄number13
maxAge最大年龄number-
monthPlaceholder月份占位符string'Month'
dayPlaceholder日期占位符string'Day'
yearPlaceholder年份占位符string'Year'
disabled禁用booleanfalse
size组件尺寸'xs' | 'sm' | 'md' | 'lg' | 'xl'-
className额外 CSS 类string-
data-testid测试 ID 前缀string-