reactjs - 未捕获的类型错误:_this.props.validatorListener 不是函数
问题描述
我正在使用库在我的 material-ui TextField 中实现表单验证react-form-validator-core
,如下所示:
它看起来就像文档示例,我在其中扩展了 ValidatorComponent。isValid
这允许从父状态 访问不同的道具。
文本输入组件
class TextInput extends ValidatorComponent {
/**
* render the component
* @returns {object} JSX
*/
render() {
const {
variant,
id,
label,
autoFocus,
multiline,
rows,
error,
errorMessages,
validators,
requiredError,
helperText,
withRequiredValidator,
...rest
} = this.props;
const { isValid } = this.state;
return (
<TextField
{...rest}
fullWidth
margin="normal"
variant={variant}
id={id}
name={id}
label={label}
autoFocus={autoFocus}
multiline={multiline}
rows={rows}
error={!isValid || error}
helperText={(!isValid && this.getErrorMessage()) || helperText}
/>
);
}
}
TextInput.propTypes = {
id: PropTypes.string.isRequired,
label: PropTypes.string.isRequired,
error: PropTypes.bool,
helperText: PropTypes.string,
variant: PropTypes.string,
autoFocus: PropTypes.bool,
multiline: PropTypes.bool,
rows: PropTypes.string,
};
TextInput.defaultProps = {
error: false,
helperText: undefined,
variant: 'outlined',
autoFocus: false,
multiline: false,
rows: '8',
};
export default TextInput;
我的表格
我正在使用 Vali
<ValidatorForm
className={classes.form}
autoComplete="off"
noValidate
onSubmit={this.handleSubmit}
>
<TextInput
id="email"
label="Email"
autoFocus={false}
onChange={this.onChange}
value={email}
validators={['required', 'isEmail']}
errorMessages={['this field is required', 'email is not valid']}
/>
<Box marginTop={2}>
<Button variant="contained" type="submit" className="button" fullWidth>
send message
</Button>
</Box>
</ValidatorForm>
问题
我不明白为什么每次在 TextField 上输入值时,都会收到此错误。我想知道将这个库与 material-ui 一起使用的有效方法。
下面是这两个函数的实现方式
改变
onChange = e => {
e.preventDefault();
const { name, value } = e.target;
this.setState({
[name]: value,
});
};
处理提交
handleSubmit() {
const { email } = this.state;
console.log(email);
}
解决方案
推荐阅读
- asp.net-core - 当 ModelState.IsValid = false 重定向时,模态弹出窗口显示不正确
- python - 我想用用户输入的新词替换文件中出现 2 次的词...
- c - 用 musl 编译给出:'错误重定位 - secure_getenv:找不到符号'
- r - R在删除除一列之外的所有列后保留列名
- php - 带有 Curl Oauth1 的 Cardinity API
- android - isWallsupportSupported() 返回 false
- python-3.x - 如何从 pytest 引用我的 Azure 函数?
- bash - 对列中的字符进行计数和索引
- android - Gradle 找不到 Android Compose 编译器
- php - 如何解决此错误消息“找不到合适的服务器(`serverSelectionTryOnce` 集):[无法解析 'db'] 在 Lumen 上?