react月份选择控件_看我的案例:用react写一个日历控件!

本文介绍了如何使用React创建一个具备月份选择、日期高亮、历史记录、标签、回调等功能的日历组件。详细阐述了计算天数、初始化、渲染日历的逻辑,并提供了组件的完整代码示例。
摘要由CSDN通过智能技术生成

说明

个人娱乐所写,UI方面参照其他人的UI设计

支持功能

初始化日期

高亮'今天'以及选择日期

历史记录选择日期

支持tag标识

支持选择日期回调

支持上一月/下一月选择回调

支持tags动态切换

屏幕适应

效果图

基本思路

计算出这一年中的每个月对应的天数,其中需要根据年份来判断2月份到底是28天还是29天,使用数组保存

计算出这个月的第一天是星期几,来决定前面应该会有多少上个月的空格以及根据天数来判断月后应该有多少天来弥补

渲染思路:

使用三个数组,分别存有上一个月、当前月以及下一个月应该渲染的天数

数组合并,根据每一行应该显示7列的特性,将大数组划分为6个小数组,这6个小数组中即为每一行应该显示的星期数

具体代码

/**

* Created by Ryn on 2016/8/7.

* 日历组件

*/

import React from 'react';

import H from '../helpers/H';

const Calendar = React.createClass({

/**

* 默认的属性

*/

getDefaultProps() {

return {

row_number : 6,

col_number : 7

}

},

/**

* 组件初始化状态

*/

getInitialState() {

return {

current_year : H.getFullYear(),

current_month : H.getMonth(),

current_day : H.getDate(),

select_year : H.getFullYear(),

select_month : H.getMonth(),

select_day : H.getDate(),

history_year : undefined,

history_month : undefined,

history_day : undefined,

date_num_array : []

}

},

componentWillReceiveProps(nextProps) {

// todo

},

/**

* 组件渲染完后执行

*/

componentDidMount() {

let { year, month, day} = this.props;

// 初始化状态

if(year && month && day) {

let date_num_array = this._initMonthDayNumber(year),

first_day = H.weekOfMonth(new Date(year, month - 1));

this.setState({

select_year : year,

select_month : month - 1,

select_day : day,

date_num_array : date_num_array,

first_day : first_day

});

}

},

/**

* 给月份数组附上每月天数

*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值