更改单选按钮的值时出现 ReduxForm 错误

ReduxForm error when changing value of a radioButton

我正在使用 reduxform 生成包含一些单选按钮问题的调查。问题是每当我更改单选按钮的值时,我都会收到此错误:

Uncaught Error: Must access array elements with a number, not "undefined".
    at deleteInWithPath (deleteIn.js:21)
    at deleteInWithPath (deleteIn.js:35)
    at deleteIn (deleteIn.js:61)
    at createReducer.js:233
    at reducer (createReducer.js:548)
    at createReducer.js:566
    at combination (combineReducers.js:120)
    at autoRehydrate.js:30
    at computeNextEntry (<anonymous>:2:27469)
    at recomputeStates (<anonymous>:2:27769)

我不知道是什么导致了错误,所以如果能帮助发现错误,我们将不胜感激。

这是呈现单选按钮的组件。

export const QuestionYesNo=({question,valueQuestion,metaData})=>{
  let error=null;

  if(metaData!==undefined){
    if(metaData[question.id]!==undefined){
      if((valueQuestion(question.id)===undefined ||valueQuestion(question.id)==='') && metaData[question.id].touched===true){
        error=<h4 style={{color:'red'}}>¡Required!</h4>
      }
    }
  }
  return(
    <div>
      <div className="question">
        <div><h3>{question.ordinal+"- "+question.name}</h3></div>
        <div>
          <label>
            <Field
              name={""+question.id}
              component="input"
              type="radio"
              value="YES"
            />{' '}
            Si
          </label>
          <label>
            <Field
              name={""+question.id}
              component="input"
              type="radio"
              value="NO"
            />{' '}
            No
          </label>
        </div>
      </div>
      {error}

    </div>


  );
};

上述组件位于每个问题的循环中的另一个组件内。包含上述组件的组件是具有 reduxForm 的组件。

这是一个 bug/limitation 的 redux 形式。如果您希望表单值在传递给 onSubmit 时位于数组中,请在字段名称前加上一个字母或一个字母后跟一个句点。

所以而不是

name={""+question.id}

name={"question"+question.id} // 结果为 {question0: "foo", question1: "bar"}

或(如果您的 ID 是从零开始单调递增的整数):

name={"questions."+question.id} // 结果数组{问题: ["foo", "bar"]}

更多信息:https://github.com/erikras/redux-form/issues/3753#issuecomment-406435226