簡體   English   中英

為 airbnb SingleDatePicker 制作下拉選擇器日期

[英]making a dropdown selector date for airbnb SingleDatePicker

我的設置是這樣的,我絕對是在擠壓圖書館外部可能的極限:

const [customDate, setCustomDate] = useState(moment());
const [focused, setFocused] = useState(false);)
const onDropDownChangeMonth = ()=>{
    setCustomDate(moment('07-12-2020', dateFormat.MM_DD_YYYY));
    setFocused(true);
}

    <SingleDatePicker
              date={customDate}
              onDateChange={onDateChange}
              focused={focused}
              placeholder={props.placeholder}
              onFocusChange={(e) => {
                setFocused(e.focused); 
              }}
              navPrev={<div></div>}
              navNext={<div></div>}
              keepFocusOnInput={true}
              renderMonthText={() => (
                <div style={{ display: 'flex', flexDirection: 'row' }}>
                  <select style={{ border: 'none', background: '#ffffff' }} onChange={onDropDownChangeMonth}>
                    <option>January</option>
                    <option>February</option>
                    <option>March</option>
                    <option>April</option>
                    <option>May</option>
                    <option>June</option>
                    <option>July</option>
                    <option>August</option>
                    <option>September</option>
                    <option>October</option>
                    <option>November</option>
                    <option>December</option>
                  </select>
                </div>
              )}
            />  

所以,我目前的實現給了我這樣的正確結果:

在此處輸入圖片說明

因為,這會重新渲染,我想保持打開狀態(我可以忍受閃爍),日期更改,日歷更改,日歷保持打開狀態,但是,他們呈現空白的孩子:
在此處輸入圖片說明

只有當我手動散焦並重新打開時,日歷才會呈現,並且我會看到反映的更改。 如何讓日歷呈現? 如何使它不必手動散焦,我不介意閃爍。

順便說一句:我正在使用SingleDatePicker的 SingleDatePicker

好吧,對於那些不介意眨眼而不是閃爍的人來說,這是一個可能的解決方案(請閱讀上面的問題)。 這是一個笨拙的解決方案,在我的情況下它沒有多大用處,只是在這里注意可能對此沒有意見的人,或者知道如何將這種閃爍減少到閃爍或什么都不做的人

put this in the `onDropDownChangeMonth`:   
  
const onDropDownChangeMonth = ()=>{
    setCustomDate(moment('07-12-2020', dateFormat.MM_DD_YYYY));
    setFocused(false);
    setTimeout(()=>setFocused(true), 1);
}  

即使我設置了 1 毫秒的超時時間,重新渲染的延遲也大約是 1 秒,這對我來說並不好。 . 請提及任何減少或擺脫延遲重新渲染的內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM