2017-05-15 6 views
0

私は、アプリケーション状態の変更によって更新されているredux-formのフィールド(source-file)を持っています。状態値はフィールドに正しく配信されていますが、送信をクリックすると、最初のフィールド(名前)のみが送信されます(対話形式で入力します)。Redux-form:州からのフィールド値が提出されていません

私はここで間違っていますか?

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)); 

答えて

0

あなたのフィールドを含めるためにReduxの形式をしたい場合は、実際のフィールド(あなたがあなたのrenderFieldと同じように)としてそれをレンダリングする必要があります。

実際のフィールドとして扱わない場合は、redux-form作者はinjecting the values from state within your submit handlerを提案します。多分このような何か:

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

私は私のフィールドを含めるために還元型が欲しいです。レンダリングしようとしましたが、問題を解決しませんでした。フォームはまだそれなしで提出されます。このフィールドを次のように変更しました。次のようにrender()を配置します。そうでなければ、 "this.props.uploadFile ":const renderFileField = field =>(

); – baerlein

+0

更新:フィールドに1回タッチすると動作します。 – baerlein

関連する問題