javascript - 通过 redux-form、reducer 和 action Creator 发送数据表单

标签 javascript reactjs redux react-redux redux-form

你好, 如何发送我的 redux 表单的字段值?事实上,我需要使用reducer和actionCreator将表单字段的值发送到数据库中。

我的表单:

import React, {PropTypes} from 'react';

class myformClass extends React.Component {
 render(){
  return(
    <form>
      <Field
        name="inputName"
        ref="inputName"
        hintText="Le nom du flux" 
        floatingLabelText="Nom du input" 
        component={renderTextField} 
        fullWidth={true}
      />
      <Field
        label="inputComment" 
        name="inputComment"
        ref="inputComment"
        hintText="La description du input"
        floatingLabelText="Commentaire" 
        component={renderTextareaField} 
      />
    </form>
  )
 }
}

export default withRouter(reduxForm({
    form: 'myForm'
})(myformClass))

在我的索引应用程序中,我导入了“redux-form 的 reducer ”:

import { reducer as reduxFormReducer } from 'redux-form'

我组合了 reducer :

let allReducers = combineReducers({form: reduxFormReducer })

我创建了一个操作类型:

export const FORM_ADD = 'FORM_ADD'

我也创建了一个 Action 创建者:

export function addForm(dataForm) {
  return {
     type: types.FORM_ADD ,
     data: {
       INPUT_NAME: dataForm.inputName, 
       INPUT_COMMENT: dataForm.inputComment
     }
  }
}

但是现在,我不知道,我应该如何使用我的 Action 创建者和 reducer 检索和发送表单的值。我知道我必须恢复表单的值然后发送它。

仅供引用,我能够通过这样做恢复我的 redux-form 的值:

import React, {PropTypes} from 'react';

class myformClass extends React.Component {

  static contextTypes = {store: PropTypes.object}

  getValMyForm = () => {
    const { store } = this.context
    const state = store.getState()
    let valueFormFLow = getFormValues('myForm')(state)
    return valueFormFLow;
  }
}

export default withRouter(reduxForm({
    form: 'myForm'
})(myformClass))

我需要你的帮助,请原谅我的英语! :)

最佳答案

当您在组件上使用 reduxForm 函数时,Redux-From 会自动为您提供一个 handleSubmit 函数,您可以向该函数传递一个函数。当您提交表单时,该函数将获得一个对象,其中所有表单值都可以通过其键(name 属性)获取。

例如(可运行 JSFiddle demo here ):

const MyForm = ({handleSubmit}) => (
 <form onSubmit={ handleSubmit((formData) => console.log(formData)) } >
   <div>
     First Name
     <Field name={`firstName`} component='input' type='text' /><br />
     Last Name
     <Field name={`lastName`} component='input' type='text' /><br />
    </div>
   <input type="submit" value="submit" />
  </form>
)

const MyTestForm = reduxForm({
  form: 'myForm'
})(MyForm);

// END EXAMPLE
ReactDOM.render(
  <Provider store={store}>
    <MyTestForm />
  </Provider>,
  document.getElementById('root')
);

因此,在这个简单的表单示例中,如果我用“Test1”和“Test2”填写第一个和第二个字段,那么当我按下提交按钮时,我将收到一 strip 有 {firstName: “Test1”,姓氏:“Test2”}

如果您有一个操作分派(dispatch),和/或一个您想要运行的 API 调用,那么您只需将另一个函数传递给 handleSubmit

关于javascript - 通过 redux-form、reducer 和 action Creator 发送数据表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46344656/

相关文章:

javascript - 如何在 redux-sagas 中注入(inject)依赖项(或上下文)

Typescript 找不到 redux

javascript - Redux @connect 装饰器中的 '@'(at 符号)是什么?

javascript - 在 TS 中使用 Jest 模拟分割分析

javascript - React 调用另一个组件

javascript - React Native ListView TextInput 锁定性能优化渲染

redux - 动态子注入(inject)和 Redux 绑定(bind)

javascript - 函数读取不传递给变量的 JSON 数据

Javascript 可拖动 div 背景

javascript - 我的代码没有从 tinymce.min.js 加载文本区域