You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React函数式组件如何使用回调事件传递周日期区间到父组件

问题描述

我正在尝试将下一周或上一周的日期区间从子组件传递到父组件,当前使用的是带hooks的函数式组件,希望获得可用于从React日历组件传递正确日期区间的帮助或建议。

提前致谢。

示例代码

我希望从Calander component选中日期后将其传入TestRequest组件。例如toobar.label返回的September 19 – 25需要对应转换为startDate为2021-09-19、endDate为2021-09-25的格式。

//child component
export interface CalendarProps {
    events: any[],
    handleSelect: any,
    onClick: any,
    handleChange: any
}

const DatesComponent  = (toolbar: any) => {
    const back = () => { toolbar.onNavigate('prev'); };
    const next = () => { toolbar.onNavigate('next'); };
    return (
        <div className='calander-container'>
        <div className='calander-container-details'>
            <ChevronLeft  size='medium' onClick={back} className='arrow'/>
            <ChevronRight size='medium' onClick={next} className='arrow'/>
        </div>
        </div >
    )
};

const DatesComponent: React.FC<CalendarProps> = (props) => {
    return <>
        <Calendar
        selectable={true}
        popup={true}
        views={['week']}
        events={props.events}
        defaultView={Views.WEEK}
        scrollToTime={new Date(1970, 1, 1, 6)}
        defaultDate={new Date()}
        onSelectEvent={(event :any) => props.handleSelect(event)}
        onNavigate={(e :any) => props.onClick(e)}
        min={new Date(0, 0, 0, 8, 0, 0)}
        max={new Date(0, 0, 0, 20, 0, 0)}
        components={{
            toolbar: DatesComponent
        }}
        />
    </>
}
    
export default DatesComponent;

//parent
cons TestRequest= () => {
    const [, setDate] = useState(null)
    const [details, setDetails] = useState(null)
    return <>
        <div className='calender-d'>
            <DisplayCalander setDate={setDate}
                setDetails={setDetails} getDetails={{details}}/>
        </div>
    </>
}
// @ts-ignore
export default withRouter(PendingRequest);


const DisplayCalander: React.SFC<DisplayAllCalendarProps> = ({ setDate, setDetails }) => {
    return (<>
    <DatesComponent 
        onClick={(e:any)=>{ setDate(e)}}
        handleSelect={(e:any) => setDetails(e)}/>
    </>)
};

解决方案更新

最终我找到了获取周区间的方法,使用onRangeChange事件即可实现。

更新后代码

const DatesComponent: React.FC<CalendarProps> = (props) => {
    return <>
        <Calendar
        selectable={true}
        popup={true}
        views={['week']}
        events={props.events}
        defaultView={Views.WEEK}
        scrollToTime={new Date(1970, 1, 1, 6)}
        defaultDate={new Date()}
        onSelectEvent={(event :any) => props.handleSelect(event)}
        onRangeChange={(e :any) => props.handleChange(e)}
        onNavigate={(e:any) => props.onClick(e)}
        min={new Date(0, 0, 0, 8, 0, 0)}
        max={new Date(0, 0, 0, 20, 0, 0)}
        components={{
            toolbar: DatesComponent
        }}
        />
    </>
}

谢谢:)

内容的提问来源于stack exchange,提问作者Tammy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 03:18:03