簡體   English   中英

Redux形式:狀態的字段值未提交

[英]Redux-form: Field value from state isn't submitted

我有一個redux格式的字段(源文件),該字段正在通過應用程序狀態的更改進行更新。 狀態值已正確傳遞到該字段,但是單擊提交時,僅提交第一個字段(名稱)(我以交互方式填寫)。

我在這里做錯了什么?

import React, { Component, PropTypes } from 'react'; 
import { reduxForm, Field } from 'redux-form'; 
import { connect } from 'react-redux'; 
import { Link } from 'react-router'; 
import * as actions from '../../actions/job_actions'; 
import UploadPage from './upload_page';

const renderField = field => (
    <div>
      <label>{field.input.label}</label>
      <input {...field.input}/>
      {field.touched && field.error && <div className="error">{field.error}</div>}
    </div> );

class JobForm extends Component {

  handleFormSubmit(formProps) {
    this.props.createJob(formProps);  }

  render() {
    const { handleSubmit } = this.props;
      return (
        <div>
          <form onSubmit={handleSubmit(this.handleFormSubmit.bind(this))}>
              <label>Title</label>
              <Field name="name" component={renderField} type="text" />
              <label>Input File</label>
              <Field name="source_file" component={() => {
                  return (
                    <div class="input-row">
                      <input type="text" value={this.props.uploadedFile} />
                    </div>
                  )
                }} />
              <button type="submit" className="btn btn-
                primary">Submit</button>
          </form>
      </div>
    );   
  }; 
 }

const form = reduxForm({ form: 'JobForm' });

function mapStateToProps({uploadedFile}) { return { uploadedFile }; }

export default connect(mapStateToProps, actions)(form(JobForm));

如果希望redux-form包含字段,則需要將其呈現為實際字段(與renderField )。

如果您不想將其視為實際字段,則redux-form作者建議將狀態值注入到您的Submit處理程序中 也許是這樣的:

handleFormSubmit(formProps) {
  this.props.createJob({ ...formProps, source_file: this.props.uploadedFile} );
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM