Expo Calendar组件markedDates类型不匹配,日期标记失效求助
解决日历组件日期标记格式不匹配问题
核心问题
PHP接口返回的arrayDados是数组结构,但Calendar组件的markedDates属性要求键为日期字符串、值为配置对象的格式,直接传数组会触发类型错误导致标记失效。
解决方案:数组转对象
用数组的reduce方法把接口返回的数组转换成组件需要的对象格式,示例代码:
// 假设接口返回的数据存在response.data.arrayDados中 const rawData = response.data.arrayDados; const markedDates = rawData.reduce((result, currentItem) => { // 用当前项的data字段作为对象键,dadosDoDia作为对应配置值 result[currentItem.data] = currentItem.dadosDoDia; return result; }, {}); // 初始化空对象作为累加器
注意事项
- 确保
currentItem.data的日期格式和Calendar组件要求完全一致(比如YYYY-MM-DD),如果格式不匹配,需要先做格式转换(比如用原生Date对象或日期工具处理)。 - 如果
dadosDoDia本身需要调整才能适配组件的配置要求,可在赋值时对其做二次处理(比如添加selected、marked等组件要求的属性)。
内容的提问来源于stack exchange,提问作者Gs Serviços
相关产品推荐
相关产品推荐

