react-native - tcomb-form-native 动态设置错误

标签 react-native tcomb-form-native

假设我有包含以下字段的登录表单:

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/

相关文章:

react-native - 如何使用 tcomb-form-native 切换到下一个输入字段?

javascript - 如何使用 tcomb-form-native 将电子邮件验证添加到字段?

ios - 无法再启动 React Native 0.15

react-native - 如何在(嵌套的)StackNavigator 中实现自定义标题图标?

react-native - 与流服务器的连接已关闭。查看输出以获取更多信息

android - Firebase CM 未注册的注册 token

javascript - React-Native-Web 的视频支持

javascript - 我可以使用一个 onPress 提交多个 tcomb 表单吗?