使用带有ASYNC Redux State的mapStateToProps填充redux-form initialValues

时间:2017-08-04 09:07:51

标签: reactjs redux react-redux redux-form

我正在尝试使用initialValues加载我的表单,如下所示:

const mapStateToProps = (state) => ({
  item: state.routes.members.item,
  initialValues: {
    id: state.routes.members.item.id,
    member: state.routes.members.item.name,
    description: state.routes.members.item.description
  }
})

const FormControls = reduxForm({
  form: 'editMember',
  getFormState: (state) => state.routes.members.form,
  onSubmit: (values, dispatch) => dispatch(ACTION_CREATORS.EDIT_MEMBER(editAdapter(values))),
  enableReinitialize: true
  }, mapStateToProps)(themable(MembersEdit))

export default connect(mapStateToProps, null)(FormControls)

但是在状态被阅读之前我得到了错误,说Uncaught TypeError: Cannot read property 'id' of null。然后表单无法加载。有什么方法可以解决这个问题吗?

由于

1 个答案:

答案 0 :(得分:1)

您必须确保state.routes.members.itemdefined而不是null。 在这里,您正在尝试访问的值  state.routes.members.item(可能是null object)。 你可以尝试这样的事情。

const mapStateToProps = (state) => {
   let initValues;

   if( state.routes.members && state.routes.members.item) {
       initValues = {
         id: state.routes.members.item.id,
         member: state.routes.members.item.name,
         description: state.routes.members.item.description
      };
   }
   return {
      item: state.routes.members.item,
      initialValues: initValues
   };
}