首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在react-datetime选择器中获取e.target.name?

如何在react-datetime选择器中获取e.target.name?
EN

Stack Overflow用户
提问于 2021-04-26 13:56:04
回答 1查看 261关注 0票数 0

我正在创建一个可以获取time picker的时间值的表单。但是由于e已经是Moment,所以我无法在handleChange中获得输入的name

有没有办法得到它?

组件:

代码语言:javascript
复制
        <DateTimeRangePicker
          selected={time}
          onChange={handleChange}
          type='timepicker'
          readOnly={false}
          texts={{
            name: 'time',
            placeholder: 'Enter your time out'
          }}
          timeFormat='HH:MM:SS'
        />

texts?.name将是一个道具,将在DatetimepickerPropsinnerProps

CustomForm handleChange

代码语言:javascript
复制
  const [values, setValues] = useState(initialState)
  const [data, setData] = useState(initialState)

  const handleChange = useCallback(
        (e: any) => {
          let result: any

          setValues({ ...values, [e.target.name]: e })
          if (e._isValid === true) {
            result = {
              value: e._d,
              status: true
            }
          } else {
            result = {
              value: e._d,
              status: false
            }
          }
          setData({ ...data, [e.target.name]: result })
        },
        [data]
      )

它必须是e.target.name,因为CustomForm onSubmit将通过它的e.target.name获取另一个输入组件

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-26 19:55:08

对于来自react-datetime-picker的组件DateTimeRangePicker

从选取器onChange接收的内容不是从Jsx元素获得的典型event;而是选取器的时间value

你可以通过这个link在源代码中看到它

一种解决方案是包装handleChange并使用常量来定义属性的名称,如下所示

代码语言:javascript
复制
const TIME_NAME = "time";


const YourComponent = () => {

    const [values, setValues] = useState(initialState)
    const [data, setData] = useState(initialState)

    const handleChange = useCallback(
        (e: any) => {
          let result: any

          setValues({ ...values, [e.target.name]: e.target.value })
          if (e._isValid === true) {
            result = {
              value: e.target.value,
              status: true
            }
          } else {
            result = {
              value: e.target.value,
              status: false
            }
          }
          setData({ ...data, [e.target.name]: result })
        },
        [data]
      );

    const handleDateTimeRangePickerChange = (_value) => {
        handleChange({target: {name: TIME_NAME, value: _value }});
    }


    return <DateTimeRangePicker
        name={TIME_NAME}
        selected={time}
        onChange={handleDateTimeRangePickerChange}
        type='timepicker'
        readOnly={false}
        texts={{
          name: 'time',
          placeholder: 'Enter your time out'
        }}
        timeFormat='HH:MM:SS'
    />
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67261491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档