我有一个无状态反应组件<Input>
,当组件 type = number
代码是这样的,它似乎有效:
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}
它似乎有效,但它是一种公认的方法吗?有更好的方法吗?
感谢。