假设我有包含以下字段的登录表单:
const Email = t.refinement(t.String, (str) => {
const reg = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;
return reg.test(str);
});
const Password = t.refinement(t.String, (str) => {
return str.length >= 6; // minimum password length should be 6 symbols
});
const Person = t.struct({
email: Email,
password: Password,
});
用户输入字段的数据进行验证,然后我向身份验证服务器发送请求,服务器另外验证收到的数据,结果发现没有具有此类凭据的用户。所以它根据响应返回:
{
success: false,
data: { password: ['User with such credentials is not found.'] }
}
问题是,如何为 tcomb 属性设置动态错误?就像是:
this.refs.form.getComponent('password').refs.input.addError(someError);
可能吗?
最佳答案
如果有人仍在寻找答案,请绑定(bind) "error message" field option周围组件的内部状态应该工作。例如:
render() {
// ... rest of code omitted
let formOptions = {
fields: {
email: {
hasError: this.state.emailHasError,
error: this.state.emailErrorMessage
}
}
};
return (<Tcomb.form.Form
ref="myForm"
options={formOptions}
/>);
}
然后在收到服务器响应时,您可以更新主要组件状态,例如:
this.setState({
emailHasError: true,
emailErrorMessage: 'Invalid email address'
});
关于react-native - tcomb-form-native 动态设置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46326073/