【问题标题】:redux-form initialValues not populatingredux-form initialValues 未填充
【发布时间】:2017-09-17 04:46:21
【问题描述】:

表单似乎没有用相应的模型属性填充字段。状态在触发时已经拥有selectedUser,因此enableReinitialize 设置无法修复它

import React from 'react'
import { connect } from 'react-redux'
import { Field, reduxForm } from 'redux-form'
import { editUser } from '../actions'

class UserDetailsEdit extends React.Component {  
  renderField(field) {
    const { meta: { touched, error } } = field
    const className = `form-group ${touched && error ? 'has-danger' : ''}`

    return (
      <div className={className}>
        <label>{field.label}</label>
        <input 
          className="form-control"
          type="text"
          {...field.input}
        />
        <div className="text-help">
          {touched ? error : ''}
        </div>
      </div>
    )
  }

  render() {
    const { handleSubmit } = this.props

    return (
      <form onSubmit={handleSubmit(this.onSubmit.bind(this))}>
        <Field 
          label="First Name"
          name="firstName"
          component={this.renderField}
        />
        <Field
          label="Last Name"
          name="lastName"
          component={this.renderField}
        />

        <div className="btn-toolbar" aria-label="...">
          <button className="btn btn-default">Cancel</button>
          <button type="submit" className="btn btn-primary">Submit</button>
        </div>
      </form>
    )
  }
}

UserDetailsEdit = reduxForm({
  form: 'UserDetailsEdit'
})(UserDetailsEdit)

UserDetailsEdit = connect(
  state => ({
    initialValues: state.selectedUser.data
  }),
  { editUser }
)(UserDetailsEdit)

export default UserDetailsEdit

我的控制台输出:

数据对象:

【问题讨论】:

  • 数据对象是什么样的?
  • 我添加了状态对象的截图

标签: reactjs redux redux-form


【解决方案1】:

我认为缺少的是您使用扩展运算符的级别。

<input className="form-control" type="text" {...field.input} />

应该是……

<input {...field} className="form-control" type="text" />

【讨论】:

  • 我面前没有代码,但从内存中,值在字段对象上,而不是输入属性
  • 这似乎不起作用。当我按照您的建议进行操作时,出现控制台错误。即使使用文档中的确切示例代码,它也不会填充
【解决方案2】:

我傻了。原来是减速机的问题。它基本上从未“挂钩”

【讨论】:

  • 干得好,正要暗示它可能是别的东西。您看起来应该可以工作的代码
猜你喜欢
  • 2017-08-26
  • 2018-06-06
  • 2018-05-08
  • 2017-12-18
  • 2016-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多