2016-12-08 3 views
0

Я новичок в редикс-форме. Я пытаюсь написать код для обновления данных на сервере. API-интерфейс обновления, который поддерживает сервер.Как использовать handleSubmit для отправки данных в форме и некоторых дополнительных данных в форме redux?

Я использую реактивные, редукционные и редукционные формы. Мой краткий код:

render() { 
    const { handleSubmit, pristine, reset, submitting, updatePost } = this.props; 
    return (
     <div> 
      <h4>Update the Post</h4> 
      <form onSubmit={handleSubmit(updatePost.bind(this))}> 
       <Field name="title" component={this.renderField} type="text" className="form-control" label="Post Title"/> 
       <Field name="description" component={this.renderField} type="textarea" className="form-control" label="Post Description"/> 
       <button type="submit" className="btn btn-primary">Update</button> 
       <Link to='/template'>Back to List</Link> 
      </form> 
     </div> 
    ); 
} 

При нажатии на кнопку Submit, код onSubmit={handleSubmit(updatePost.bind(this))} отправляет все данные в виде моей функции updatePost.
Мой вопрос: я хочу передать некоторые данные (например, PostID). Как я могу это сделать? Я не хочу использовать чит (например, скрытое поле в моей форме).
Спасибо.

+0

OK. Я согласен, что использование скрытого поля не является обманом. Но как я могу решить свою проблему, не используя скрытое поле? – user3089480

+0

Что это за ручка 'onSubmit = {handleSubmit (updatePost.bind (this))' делать там? –

+0

@JyothiBabuAraja. Он отправляет данные в форме в функцию updatePost (data). Я могу получить все данные в форме. – user3089480

ответ

0

Не уверен, что именно ваш случай использования, но есть несколько подходов, которые можно сделать ...

использованием setState родительского компонента, вы можете передать его в качестве реквизита внутри initialValues.

class ParentComponent extends Component { 
    updatePost(formValues) { 
     // process data 
     this.setState({ postId: '...' }); 
    } 
    render() { 
     return <FormComponent initialValues={{postId: this.state.postId}} /> 
    } 
} 

Просто убедитесь, что у вас есть enableReinitialize значение ИСТИНА при инициализации вашего reduxForm.

export default reduxForm({ form: 'myFormName', enableReinitialize: true })(FormComponent);

Или

использование reduxForm change действия создателя

import { change } from 'redux-form'; 

class ParentComponent extends Component { 
    updatePost(formValues) { 
     this.props.change('myFormName', 'postId', 'postid_value'); 
    } 
    ... 
} 

export default connect(mapStateToProps, { change })(ParentComponent); 

Или передать сообщения дан как себя (<MyForm postId={...} />) реквизита и сделать change действие внутри компонента MyForm.