Calendar

日历组件数据层逻辑独立出来,使用 utils 方式集成进来,为跨平台提供便利。

Install

  1. npm install beeshell

Usage

  1. import { Calendar } from 'beeshell';

Examples

image

Code

  1. import { Calendar } from 'beeshell';
  2. class App extends React.Component {
  3. render() {
  4. return (
  5. <View style={{flex: 1, backgroundColor: '#ebebea'}}>
  6. <Text>{this.state.date}</Text>
  7. <View style={{marginVertical: 50}} >
  8. <Calendar
  9. date={this.state.date}
  10. startDate={'2018-04-11'}
  11. endDate={'2018-06-22'}
  12. onChange={(date) => {
  13. this.setState({
  14. date
  15. });
  16. }}>
  17. </Calendar>
  18. </View>
  19. </View>
  20. );
  21. }
  22. }

Props

Name Type Required Default Description
date String false 当天 日期值
startDate String false null 可以选择的最小日期
endDate String false null 可以选择的最大日期
onChange Function false null 日期修改的回调
renderItem Function false null 每个日期的渲染方式
renderHeader Function false null 渲染组件header部分
renderWeekDay Function false null 星期日-星期一的渲染

自定义渲染方法

props 入参 需要的返回值
renderItem 1. 待渲染的日期
Object {dateModel: moment 实例, formattedDate: 'YYYY-MM-DD'格式的时间字符串}
2. date 当前日历时间, moment 对象
React Element
renderHeader 1. date 当前日历时间, moment 对象
2. changeDate(type, method), 用于修改日历时间, type: 'day', 'month', 'year', method: add 或者 subtract
React Element
renderWeekDay weekday: ‘日’, ‘一’…’六’ React Element

自定义渲染例子

  1. import { Calendar } from 'beeshell';
  2. class App extends React.Component {
  3. renderItem = (item, date) => {
  4. return (
  5. <Text>
  6. { item.dateModel.format('DD') }
  7. </Text>
  8. )
  9. }
  10. renderHeader = (date, changeDate) {
  11. return (
  12. <View>
  13. <Button onPress={() => changeDate('month', 'subtract')}>
  14. -
  15. </Button>
  16. <Text>
  17. { date.format('YYYY年MM月DD日') }
  18. </Text>
  19. <Button onPress={() => changeDate('month', 'add')}>
  20. +
  21. </Button>
  22. </View>
  23. )
  24. }
  25. renderWeekDay = (weekday) => ( <Text>周{weekday}</Text> )
  26. render() {
  27. return (
  28. <View style={{flex: 1, backgroundColor: '#ebebea'}}>
  29. <Text>{this.state.date}</Text>
  30. <View style={{marginVertical: 50}} >
  31. <Calendar
  32. date={this.state.date}
  33. startDate={'2018-04-11'}
  34. endDate={'2018-06-22'}
  35. onChange={(date) => {
  36. this.setState({
  37. date
  38. });
  39. }}
  40. renderItem={this.renderItem}
  41. renderHeader={this.renderHeader}
  42. renderWeekDay={this.renderWeekDay}
  43. >
  44. </Calendar>
  45. </View>
  46. </View>
  47. );
  48. }
  49. }