redux-form:如何在另一个组件上显示表单值

Tho*_*lan 6 reactjs redux redux-form react-redux

我正在使用redux-form 6.0.0-rc.5,我试图显示用户输入的表单值.

但是,我希望从另一个组件显示这些值,而不是redux表单本身.

所以,我简化的App架构就是这样的:

<App />              -> (main component -container ?-)
  <List />           -> (connect to form values and pass them down)
    <Elem />         -> (display form value)
  <Form />           -> (enter form values)
Run Code Online (Sandbox Code Playgroud)

该组件是一个redux形式安装到'形式',并正在工作.

Form = reduxForm({
  form: 'formName'
})(Form)
Run Code Online (Sandbox Code Playgroud)

获取表单值(来自state form.formName.values)并将它们发送到我的Display组件的好方法是什么?

我尝试过的事情:

  • App连接到商店和mapStateToProps(form.formName.values),然后将其作为道具传递给Display.但它会抛出一个错误,因为在表单状态中不存在值,直到用户输入任何内容为止.

  • 使用由List组件内的redux-form提供的函数getFormValues('formName'),但它返回一个函数或未定义:

ELEM

const Elem = ({ name }) => (
  <li>{name}</li>
)
Run Code Online (Sandbox Code Playgroud)

名单

const List = ({ values }) => (
  {values.map(value => <Elem name={value.name} />)}      
)

List = connect(
  state => ({
    values: getFormValues('formName')
  })
)(List)
Run Code Online (Sandbox Code Playgroud)

必须有一些我缺少的东西,或者我仍然无法正确理解它是使用redux-form还是redux本身...我希望有人能够启发我!

谢谢你,祝你有个美好的一天.

tma*_*ini 7

尝试使用

List = connect(
  state => ({
    values: getFormValues(state.form.formName)
  })
)(List)
Run Code Online (Sandbox Code Playgroud)

代替.至少这是它在v5中的工作方式,尽管有方法被调用getValues而不是getFormValues.

编辑:快速查看v6中的文档后,您将不得不使用formValueSelector:http://redux-form.com/6.0.0-rc.3/examples/selectingFormValues/

  • 是.`formValueSelector`就是答案. (3认同)