首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >redux-从多个选项卡中的验证

redux-从多个选项卡中的验证
EN

Stack Overflow用户
提问于 2018-10-25 20:10:25
回答 1查看 176关注 0票数 0

我有一个要求,我必须验证多个表单(模式),这些表单位于react-js的单个组件中的不同选项卡中。每个选项卡都有添加图标,当用户单击添加图标时,它会打开一个模式窗口(由表单组成)。我必须验证该表单并提交它。提交可以很好地工作,但是在这里我搞不清如何使用redux-form进行验证。谁能帮助验证多个表单的最佳方法是什么?提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-08-28 14:49:26

我们可以在redux-form中处理不同的提交和验证

redux-form Example

代码语言:javascript
复制
import React, { Component } from 'react';
import { Link } from 'react-router-dom';
/*------- connect redux with redux --------*/
import { connect } from 'react-redux';
/*------- action which all data to data base --------*/
import { addMessage } from './actions'
/*------- redux form --------*/
import { Field, reduxForm } from 'redux-form';
 
class Form extends Component {
 
   //PRISTINE / DIRTY // TOUCHED / ERROR : events in redux-form
 
/*------- renderInputField  --------*/
   renderInputField(field){
       const className = `form-input ${field.meta.touched && field.meta.error ? 'has-error':''}`;
       return (
           <div className={className}>
               <label>{field.myLabel}</label>
               <input type="text" {...field.input}/>
               <div className="error">
                   {field.meta.touched ? field.meta.error:''}
               </div>
           </div>
       )
   }
/*------- renderTextareaField  --------*/
   renderTextareaField(field){
       const className = `form-input ${field.meta.touched && field.meta.error ? 'has-error':''}`;
       return(
           <div className={className}>
               <label>{field.myLabel}</label>
               <textarea
                   {...field.input}
               ></textarea>
                <div className="error">
                   {field.meta.touched ? field.meta.error:''}
               </div>
           </div>
       )
   }
 
/*------- onSubmit() : runs on submit  --------*/
   onSubmit(values){
 
       this.props.addMessage(values,()=>{
 
       })
   }
 
 
   render(){
       return(
           <div className="Form">
               <div className="top">
                   <h3>Add a Message</h3>
                   <Link to="/">Back</Link>
               </div>
               <form onSubmit={this.props.handleSubmit((event)=>this.onSubmit(event))}>
 
                   <Field
                       myLabel="Enter Title"
                       name="title"
                       component={this.renderInputField}
                   />
 
                   <Field
                       myLabel="Enter name"
                       name="from"
                       component={this.renderInputField}
                   />
 
                   <Field
                       myLabel="Enter message"
                       name="message"
                       component={this.renderTextareaField}
                   />
 
 
                   <button type="submit">Submit</button>
 
               </form>
           </div>
       )
   }
}
/*------- validate() : validates our form  --------*/
 
 
function validate(values){
   const errors = {};
 
   if(!values.title){
       errors.title = "The title is empty"
   }
 
   if(!values.from){
       errors.from = "The from is empty"
   }
 
   if(!values.message){
       errors.message = "The error is empty"
   }
 
   return errors;
}
   /*------- it returns messages when action is called and state going to change  --------*/
 
function mapStateToProps(state){
   console.log(state)
   return {
       success: state.data
   }
}
 
   /*------- reduxForm : connects redux-form with react form   --------*/
 
export default reduxForm({
   validate,
   form:'PostMessage'
})(
   connect(mapStateToProps,{addMessage})(Form)
)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52988959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档