在组件上启用/禁用动态eventlistener

时间:2017-08-03 18:43:41

标签: javascript reactjs redux redux-form

我有一个无状态反应组件<Input>,当组件 type = number

时,我需要添加 keyPress 事件

代码是这样的,它似乎有效:

function Input({
 input: {
   name,
   onBlur,
   onChange,
   ...attributes
   },
   …..
 label,
 onBeforeBlur,
 onBeforeChange,
 placeholder,
 type,
 autoCapitalize,
 displayValid,
 disabled = false,
 }) {

  …...
 //I added the event listener function
function handleKeyPress(event) {
  if (!(event.charCode >= 48 && event.charCode <= 57)) {
    event.preventDefault()
  }
}

return (
  <div className="field--wrapper">

    <div className="field">
      <div className={classNames}>
        <input
          {...attributes}
          autoCapitalize={autoCapitalize}
          className="input__input"
          disabled={disabled}
          id={id || name}
          name={name}
          onBlur={onBeforeBlur ? onBeforeBlur(onBlur) : onBlur}
          onChange={onBeforeChange ? onBeforeChange(onChange) : onChange}
          type={type || 'text’}

          //this is the event listener, when not number I assign false!! Is this correct?
          onKeyPress={type === 'number' ? handleKeyPress : false}
        />
        {children}
      </div>
    </div>
  </div>
  )
}

但有一些组件input type=text如果是这样,我不想分配keypress。 eventlistester,所以我检查类型:

onKeyPress={type === 'number' ? handleKeyPress : false}

它似乎有效,但它是一种公认​​的方法吗?有更好的方法吗?

感谢。

0 个答案:

没有答案