首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React functional component onChange问题

React functional component onChange问题
EN

Stack Overflow用户
提问于 2020-08-11 23:31:30
回答 1查看 647关注 0票数 0

我是个新手,尝试创建一个简单的整数输入字段,只允许数字输入。

我的代码:

代码语言:javascript
复制
import React, {useState} from "react";


export const IntegerInput = props => {

    const maxLength = props.maxLength ? parseInt(props.maxLength) : 10;

    const [intValue, setIntValue] = useState(props.value);

    const inputMask = new RegExp(/^[0-9\b]+$/);

    function handleChange(e) {
        let inputValue = e.target.value;

        let isNumber = inputMask.test(inputValue);
        let isEmpty = inputValue === '';

        if (isEmpty || isNumber) {
            console.log('Update value to: ' + inputValue);
            setIntValue(inputValue);
        } else {
            console.log('Invalid input: ' + inputValue);
        }

    }

    return (
        <input name = {props.name}
               id = {props.name + '-id'}
               type = "text"
               className = {props.className}
               maxLength = {maxLength}
               value = {intValue}
               onChange = {handleChange}
        />
    );

}

控制台中没有错误,只有在需要时才会调用setIntValue,但仍然可以在输入字段中输入任何字符。

可能的问题是什么?

请注意,我想使用“文本”输入,而不是“数字”,而且我在React端遇到了问题,而不是JavaScript。

EN

回答 1

Stack Overflow用户

发布于 2020-08-11 23:35:25

Ciao尝试像这样修改你的输入类型:

代码语言:javascript
复制
    <input name = {props.name}
           id = {props.name + '-id'}
           type = "number"
           className = {props.className}
           maxLength = {maxLength}
           value = {intValue}
           onChange = {handleChange}
    />

这应该可以解决您的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63361489

复制
相关文章

相似问题

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