更改单选按钮的值时出现 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
我正在使用 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