为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 ReactJS 中创建动态函数名称并在 onBlur 上使用?

如何在 ReactJS 中创建动态函数名称并在 onBlur 上使用?

哆啦的时光机 2021-10-29 16:47:58
我想使用其名称为连接字符串和变量的函数名称。验证包含函数名称:const validate='validate'+type.replace(/^./, type[0].toUpperCase());其中类型='电子邮件'const validateEmail = (e) => {email=e.target.value;//console.log(email);var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;{(!re.test(email)) && console.log("Please enter a valid email address");}}现在我想将此验证用作 onBlur 中的函数名称onBlur={validate}在<input onChange={handleChange} onBlur={validate} />警告:预期的onBlur侦听器是一个函数,而不是一个string类型的值。
查看完整描述

1 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

你可以有一个像这样的通用函数,它接受类型作为输入并返回一个验证函数。


const createValidator = type => {

    switch (type) {

        case 'email':

            return (event) => {

                const email = event.target.value;

                const re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

                (!re.test(email)) && console.log("Please enter a valid email address");

            }


        default:

            return null;

    }

}

在你的输入标签中,你可以像这样使用它


<input onChange={handleChange} onBlur={createValidator('email')} />


查看完整回答
反对 回复 2021-10-29
  • 1 回答
  • 0 关注
  • 224 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号