Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试让validate函数与redux表单一起工作_Javascript_Reactjs_Redux_Redux Form - Fatal编程技术网

Javascript 尝试让validate函数与redux表单一起工作

Javascript 尝试让validate函数与redux表单一起工作,javascript,reactjs,redux,redux-form,Javascript,Reactjs,Redux,Redux Form,我以前在另一个应用程序上尝试过这一点,只是复制了代码并编辑了路径,以及我需要为这个应用程序做的事情。我没有得到任何错误,但我似乎无法使这项工作。它不会显示任何错误消息,也不会将我的类应用于输入 import React, { Component } from 'react'; import {Field, reduxForm} from 'redux-form'; import {connect} from 'react-redux'; import * as actions from '../

我以前在另一个应用程序上尝试过这一点,只是复制了代码并编辑了路径,以及我需要为这个应用程序做的事情。我没有得到任何错误,但我似乎无法使这项工作。它不会显示任何错误消息,也不会将我的类应用于输入

import React, { Component } from 'react';
import {Field, reduxForm} from 'redux-form';
import {connect} from 'react-redux';
import * as actions from '../../actions';

class Signin extends Component {
  constructor(props) {
    super(props);

    this.onSubmit = this.onSubmit.bind(this);
  }

  renderField(field) {
    const { meta: {touched, error} } = field;
    const className = `form-group ${touched && error ? 'has-danger' : ''}`;

    return (
      <div className={className}>
        <label><strong>{field.label}:</strong></label>
        <input
          className="form-control"
          type="text"
          {...field.input}
        />
        <div className="text-help">
          { touched ? error : ''}
        </div>
      </div>
    )
  }

  onSubmit({email, password}) {
    console.log(email, password);
  }

  render() {
    const { handleSubmit } = this.props;

    return (
      <form onSubmit={handleSubmit(this.onSubmit)}>
        <Field
          label="Email"
          name="email"
          component={this.renderField}
        />
        <Field
          label="Password"
          name="password"
          component={this.renderField}
        />
        <button type="submit" className="btn btn-success">Sign In</button>
      </form>
    );
  }
}

function validate(values) {
  const errors = {};

  //Validate the inputs from values
  if(!values.email) {
    errors.title = "Enter an email!";
  }
  if(!values.password) {
    errors.categories = "Enter a password!";
  }
  //If errors is empty, the form is fine to submit
  //If errors has any properties, redux form assumes form is invalid
  return errors;
}

export default reduxForm({
  validate,
  form: 'signin'
})(connect(null, actions)(Signin));
import React,{Component}来自'React';
从“redux form”导入{Field,reduxForm};
从'react redux'导入{connect};
将*作为操作从“../../actions”导入;
类签名扩展组件{
建造师(道具){
超级(道具);
this.onSubmit=this.onSubmit.bind(this);
}
渲染场(场){
常量{meta:{toucted,error}}=field;
const className=`form group${moved&&error?'has danger':'}`;
返回(
{field.label}:
{触摸?错误:“”
)
}
onSubmit({电子邮件,密码}){
控制台日志(电子邮件、密码);
}
render(){
const{handleSubmit}=this.props;
返回(
登录
);
}
}
函数验证(值){
常量错误={};
//验证值的输入
如果(!values.email){
errors.title=“输入电子邮件!”;
}
如果(!values.password){
errors.categories=“输入密码!”;
}
//如果错误为空,则可以提交表单
//若错误有任何属性,redux表单将假定表单无效
返回错误;
}
导出默认reduxForm({
验证
表格:'签名'
})(连接(空,动作)(签名));

因此,验证功能的问题在于附加了错误日志,因为错误映射到标题和类别,而字段名是电子邮件和密码

使用


当我指的是没有任何错误时,可能会有点困惑。我的意思是,在控制台中不会出现任何错误,也不会出现与应用程序编码端相关的错误。验证中的错误(我想显示的错误)也没有显示。在验证函数中,执行console.log(错误)并检查它是否给出了正确的结果。我的朋友是个天才!我做了控制台日志,意识到它们仍然附加到errors.title和errors.categories。我需要将它们切换到errors.email,errors.password!!
function validate(values) {
  const errors = {};

  //Validate the inputs from values
  if(!values.email) {
    errors.email = "Enter an email!";
  }
  if(!values.password) {
    errors.password = "Enter a password!";
  }
  //If errors is empty, the form is fine to submit
  //If errors has any properties, redux form assumes form is invalid
  return errors;
}