【问题标题】:DateTimePicker does not close when pressing 'OK' button按下“确定”按钮时 DateTimePicker 不关闭
【发布时间】:2022-09-24 14:27:43
【问题描述】:

我想使用这个库中的DateTimePicker

import DateTimePicker from \'@react-native-community/datetimepicker\';

问题在于android。当我按下OK 按钮时 - 它会正确设置所选日期,但不会关闭 - 否则它会消失一秒钟并再次打开。我需要按cancel 关闭日期时间窗口。我怎样才能解决这个问题?

const [date, setDate] = useState(new Date())
const [mode, setMode] = useState(\'date\')
const [show, setShow] = useState(false)
const [pickedDate, setPickedDate] = useState(\'Pick date\')
const [pickedTime, setPickedTime] = useState(\'Pick time\')

const onChange = (event, selectedDate) => {
    const currentDate = selectedDate || date

    setDate(currentDate)

    const days = String(selectedDate.getDate()).padStart(2, \'0\')
    const month = String(selectedDate.getMonth() + 1).padStart(2, \'0\')
    const year = selectedDate.getFullYear()

    const formattedDate = year + \'/\' + month + \'/\' + days
    setPickedDate(formattedDate)

    const hours = selectedDate.getHours()
    const minutes = selectedDate.getMinutes()
    const formattedTime = (hours < 10 ? \'0\' + hours : hours) + \':\' + (minutes < 10 ? \'0\' + minutes : minutes)
    setPickedTime(formattedTime)
}
{ show && (
<DateTimePicker
    value={date}
    mode={mode}
    is24Hour={true}
    display={Platform.OS === \'ios\' ? \'spinner\' : \'default\'}
    onChange={(event, date) => onChange(event, date)}
    />
  )
}

    标签: android react-native


    【解决方案1】:

    您需要检查onChange 函数的事件类型。并据此处理。

    if(event.type == "set") {
        //ok button clicked
    } else {
        //cancel button clicked
    }
    
    

    【讨论】:

    • 感谢您的建议,但结果是一样的 - 窗口关闭一秒钟然后再次打开
    • @John 你在哪里调用 setShow(false) 在你的代码中
    • 我在onChange 方法的末尾使用了setShow(false),它关闭了窗口,但它看起来像这样:hidden -> showed again for milisecond -> hidden again until I turn on the window again
    【解决方案2】:

    尝试在 onChange 上将 show 设置为 false,但请确保在设置值之前调用它。我按照以下答案为日期模式修复了此问题: https://github.com/react-native-datetimepicker/datetimepicker/issues/54

    【讨论】:

      猜你喜欢
      • 2019-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多