React中是否有更简洁的方式渲染按天分类的待办事项代码?
优化多日期任务渲染方案
1. 先定义固定的日期顺序
避免渲染时日期乱序,先明确一周的日期序列:
const weekDays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
2. 按日期分组任务数据
用Array.reduce()把所有任务按日期归类,省去重复判断的麻烦:
const tasksByDay = renderTasks.reduce((grouped, task) => { // 跳过day为空的任务 if (!task.day) return grouped; if (!grouped[task.day]) { grouped[task.day] = []; } grouped[task.day].push(task); return grouped; }, {});
3. 动态渲染所有日期与任务
遍历预定义的日期列表,自动渲染每个日期及其对应的任务:
{weekDays.map(day => ( <div key={day} className="day-container"> <h4 className="day">{day}:</h4> {/* 仅当该日期有任务时渲染任务列表 */} {tasksByDay[day]?.map(task => ( <div className="taskBox" key={task.id}> <span className="renderTime"> {task.hour}:{task.minute}{task.time} </span> <span className="renderTask">{task.task}</span> </div> ))} </div> ))}
关键说明
- 可选链操作符
?.确保某个日期没有任务时不会触发报错,实现安全渲染; - 无需重复编写七份相同逻辑的代码,后续调整日期顺序仅需修改
weekDays数组; - 自动过滤
day字段为空的任务,满足你提出的「仅显示day不为空的任务」需求。
内容的提问来源于stack exchange,提问作者taram414
相关产品推荐
相关产品推荐

